"Game of Life"
"Each cell has a push button to turn it on, and a green display showing whether
it's on or off. When the clock is active, the rules of game of life are followed.

It follows the rules correctly, however sometimes it may seem as if it does
incorrect behaviour while you enter input, because this depends on when it
registers the input.

Each GOL cell has half adders and full adders to count whether there are 2 or
3 neighbor inputs active. Based on that, it applies the GOL rules to set the
state of a D flipflop representing the cell's living state.
"



"Clock"
iiiiii     *****[*******
iiiiii     *           *
iiIiii     ***>ddddd>*********]*
iiiiii                         *]*******
iiiiii************************]*       *
                                       b
jjjjjj                                 *
jjjjjj                                 *
jjjjjj**********************************
jjjjjj
jjjjjj
"Single Step (clock must be off)"


..v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*..
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***
. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .
**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<
. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .
. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .
. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .
. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .
.   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   .
.   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   .
.   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   .
.   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   .
.   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   .
.   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   .
.   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   .
.   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   .
.   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   .
.   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   .
.   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   .
.   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   .
.   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   .
.   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   .
.   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   .
.   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   .
.   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   .
>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>
. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .
<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<
. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .
. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .
. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .
. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .
. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .
. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .
. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .
. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .
. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .
. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .
. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .
. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .
. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .
. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .
. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .
. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .
. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .
. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .
. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .
. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .
.   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * .
>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**
.   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * .
*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
..*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^..
..v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*..
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***
. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .
**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<
. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .
. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .
. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .
. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .
.   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   .
.   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   .
.   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   .
.   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   .
.   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   .
.   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   .
.   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   .
.   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   .
.   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   .
.   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   .
.   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   .
.   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   .
.   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   .
.   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   .
.   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   .
.   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   .
.   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   .
>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>
. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .
<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<
. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .
. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .
. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .
. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .
. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .
. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .
. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .
. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .
. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .
. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .
. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .
. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .
. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .
. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .
. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .
. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .
. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .
. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .
. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .
. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .
.   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * .
>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**
.   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * .
*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
..*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^..
..v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*..
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***
. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .
**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<
. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .
. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .
. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .
. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .
.   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   .
.   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   .
.   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   .
.   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   .
.   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   .
.   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   .
.   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   .
.   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   .
.   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   .
.   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   .
.   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   .
.   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   .
.   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   .
.   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   .
.   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   .
.   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   .
.   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   .
>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>
. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .
<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<
. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .
. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .
. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .
. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .
. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .
. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .
. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .
. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .
. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .
. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .
. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .
. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .
. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .
. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .
. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .
. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .
. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .
. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .
. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .
. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .
.   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * .
>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**
.   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * .
*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
..*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^..
..v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*..
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***
. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .
**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<
. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .
. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .
. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .
. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .
.   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   .
.   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   .
.   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   .
.   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   .
.   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   .
.   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   .
.   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   .
.   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   .
.   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   .
.   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   .
.   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   .
.   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   .
.   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   .
.   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   .
.   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   .
.   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   .
.   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   .
>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>
. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .
<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<
. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .
. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .
. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .
. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .
. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .
. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .
. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .
. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .
. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .
. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .
. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .
. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .
. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .
. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .
. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .
. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .
. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .
. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .
. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .
. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .
.   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * .
>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**
.   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * .
*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
..*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^..
..v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*..
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***
. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .
**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<
. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .
. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .
. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .
. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .
.   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   .
.   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   .
.   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   .
.   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   .
.   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   .
.   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   .
.   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   .
.   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   .
.   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   .
.   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   .
.   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   .
.   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   .
.   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   .
.   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   .
.   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   .
.   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   .
.   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   .
>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>
. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .
<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<
. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .
. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .
. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .
. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .
. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .
. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .
. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .
. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .
. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .
. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .
. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .
. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .
. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .
. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .
. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .
. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .
. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .
. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .
. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .
. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .
.   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * .
>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**
.   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * .
*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
..*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^..
..v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*....v.*..........................^.v...........................^.*..
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***<*+*+****************************+**************************** ***
. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .. * * *                          *                           *   .
**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<**+** *                        ***                         **+***<
. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .. *   *                        *                           * *   .
. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .. * ***                ********+***********>*              * *   .
. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .. * *                  *       *            *              * *   .
. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .. **+**                *       * **********]*>****]****    * *   .
.   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   ..   * *                *       * *          *    ^    *    * *   .
.   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   ..   * * ***************+******** *       **]*    *    *    * *   .
.   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   ..   * * *              *         *       *       *    *    * *   .
.   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   ..   * * * jjjjjjjj     **********+*******+*>*    *    *    * *   .
.   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   ..   * * * jjjjjjjj iii *         *       *  *]***+*]* *    * *   .
.   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   ..   * * * jjjjjjjj iii *         ********+*]*    *  * *    * *   .
.   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   ..   * * * jjjjjjjj iii *         *       *       **]* *    * *   .
.   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   ..   * * * jjjjjjjj*****+*>ddddd>*+*******+**     *  w *    * *   .
.   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   ..   * * * jjjjjjjj     *         *       * ******+*>***    * *   .
.   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   ..   * * * jjjjjjjj     *     *[**+**     *       *    w ii * *   .
.   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   ..   * * * jjjjjjjj     *     *   ^ *     * ******+***[*<ii * *   .
.   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   ..   * * * jjjjjjjj     *     *** r<*     * *     *         * *   .
.   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   ..   * * * jjjjjjjj     ^     w m ^ *     ^ ***>r<**********+**   .
.   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   ..   * * * jjjjjjjj   *>*<***** rrr *** rrr     w   *       * *   .
.   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   ..   * * * jjjjjjjj   * ^     m ^ ^   m ^ ^ b*>>*]c>*       * *   .
.   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   ..   * * *            * *     *[+**   *[+**  **]*   *       * *   .
.   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   ..   * * * ************ ***** *[* *   *[* *         *       * *   .
>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>>** * * * *                *   * *     * *         *       * ****>
. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .. * * * * *     ***********+**** *     * * ooooooooooooo   * *   .
<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<<*+** * * *     *          *     *     * * ooooooooooooo **+*+***<
. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .. * * * * *     *       ***+*****+****** * ooooooooooooo * * *   .
. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .. * * * * *     *       *  *     *       * ooooooooooooo * * *   .
. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .. * * * * * *[**+**     *  * *[**+**     * ooooooooooooo * * *   .
. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .. * * * * * *   ^ *     ^  * *   ^ *     * ooooooooooooo * * *   .
. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .. * * * * * *** r<*     r  * *** r<*     * ooooooooooooo * * *   .
. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .. * * * * * w m ^ *     ^  * w m ^ *     ^ ooooooooooooo * * *   .
. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .. * * * * *** rrr *** rrr  *** rrr *** rrr ooooooooooooo * * *   .
. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .. * * * *   m ^ ^   m ^ ^    m ^ ^   m ^ ^ ooooooooooooo * * *   .
. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .. * * * *   *[+**   *[+**    *[+**   *[+** ooooooooooooo * * *   .
. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .. * * * *   *[* *   *[* *    *[* *   *[* * ooooooooooooo * * *   .
. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .. * * * *     * *     * *      * *     * * ooooooooooooo * * *   .
. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .. * * * * ***** * ***** *  ***** * ***** * ooooooooooooo * * *   .
. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .. * * * * *      x      *  *      x      * ooooooooooooo * * *   .
. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .. * * * * *  **** **  ***  *  **** **  *** ooooooooooooo * * *   .
. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .. * * * * m  *     m  *    m  *     m  *                 * * *   .
. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .. * * * * *[*+**   *[*+**  *[*+**   *[*+**             **+** *   .
. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .. * * * * m  ^ *   m  ^ *  m  ^ *   m  ^ *             * *   *   .
. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .. * * * ****>r<*   **>r<*  **>r<*   **>r<*************** * ***   .
. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .. * * *++++++++*   *    *  *    *   *                    * *     .
. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .. **+*+++++++++++++*    *  *    ****+********************+*+**** .
.   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * ..   *                   *  *****    *                    * *   * .
>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**>***+********************      *    ********************** * **+**
.   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * ..   *                          *                           * * * .
*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>*** ***************************+*****************************+*+*>
. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .. * *                          * *                           * * .
..*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^....*.v..........................^.v...........................*.^..
