.......................;;;.;;;;;;;;;;;;;;;;;;;;;;;;;-------------------
                            ............................;;;;;;;;;;;;;;;;;;;;;;;;;-------------------
                             ............................;;.;;;;;;;;;;;;;;;;;;;;;-------------------
                             ............................;;;;;;;;;;;;;;;;;;;;;;;;-------------------
                            ...............................;;;;;;;;;;;;;;;;;;;;;;;------------------
                            ................................;;;;;;;;;;;;;;;;;;;;;;------------------
                            .................................;;;;;;;;;;;;;;;;;;;;;;;;---------------
                            ..................................;;;;;;;;;;;;;;;;;;;;;;;---------------
                             .................................;;;;;;;;;;;;;;;;;;;;;;;---------------
                             ............::.....................;;;;;;;;;;;;;;;;;;;;;;--------------
                            .............>?7:..................;.;;;;;;;;;;;;;;;;;;;;;--------------
                            .............7>7?>;..............;>?!.;;;;;;;;;;;;;;;;;;;;--------------
                           ..............>>>?OC!...  ......;7OO$O-.;;;;;;;;;;;;;;;;;;;--------------
                          ...............-7:!C$O>:;..;....!CCCOO$!.;;;;;;;;;;;;;;;;;;;--------------
                          ................7>??OC>77!!!!:-!COCCC$Q!.;;;;;;;;;;;;;;;;;;;--------------
                          ................>C>>!!>C???777!?Q$C?O$$-.;;;;;;;;;;;;;;;;;;;--------------
                           ...............>$7!!>>>!???CCCCOQ$$$$O;.;;;;;;;;;;;;;;;;;;;;-------------
                         .................7$::!!!!>??CCCC$CC?HHOO.;;;;;;;;;;;;;;;;;;;;--------------
                         .................;7-!!>?7>C?OOOO$OCC$HQ?.;;;;;;;;;;;;;;;;;;;;--------------
                       . ...................-::!C!>OCC$OOO$$?$QO!;;;;;;;;;;;;;;;;;;;;;--------------
                       .....................:::!O!7CC?$OCCO$OC?>;;;;;;;;;;;;;;;;;;;;;---------------
                       ...................;;>>COC?7??COC??CO7>>>;;;;;;;;;;;;;;;;;;;;;---------------
                        ..................;!7OO?$>77>!$$$?CC7!>>-;;;;;;;;;;;;;;;;;;;;---------------
                      ...................;;-!?OOQ7>!:CCO?OOC7!!>;;;;;;;;;;;;;;;;;;;-----------------
                      ...................;;;:>C$$7!>:$$CO>?C?7!!;;;;;;;;;;;;;;;;;;;-----------------
                     ....................;.;:>!!!-:>>??O???7>77:;;;;;;;;;;;;;;;;;;;;----------------
                    ....................;-;!!>::;-777!!>??7>!>7-;;;;;;;;;;;;;;;;;;;;----------------
                   ....................;:;;:C>;>:OQH>C?>??7>>>>-;;;;;;;;;;;;;;;;;;;-----------------
                  ....................;-----??-7>7Q77OC>7???77!;;;;;;;;;;;;;;;;;;;;-----------------
     .           ....................;;-;-!-:C:>?C$??CC>7??77>:;;;;;;;;;;;;;;;;;;;------------------
               .....................;;;;.--!:7?!7CO$C??7??7>77-;;;;;;;;;;;;;;;;;;;------------------
             ......................;;;;;.;:7?C7C>!>7?C??7!7???>;;;;;;;;;;;;;;;;;;-------------------
             ... ..................;;;;;;-7?O$?O$C???C?77?7>>>!;;;;;;;;;;;;;;;;-------------------::
           .......................;;;;;.;:77???CCO$OCC777CC7>7!;;;;;;;;;;;;;;;;-------------------::
         ..........................;;;..--:7?7??>????O??77??>>:;;;;;;;;;;;;;;;;-------------------::
         ..............................;-:>?7>??7?7??COC?77>!>-;;;;;;;;;;;;;;;----------------------
      ..............................;-;-::7>77777??77?OC7>!>>>;;;;;;;;;;;;;;;-----------------------
    ..............................;.;!!:!>77?7777>7C7>7?>>>!>>;;;;;;;;;;;;;;;----------------------:
      . ......... ................;;-!??>777777??77777>77>>>>>;;;;;;;;;;;;;;;----------------------:
      ............................;;;:7OO7??77777O?77>7>>>>>>>;;;;;;;;;;;;;;----------------------::
. ..............................->C>-:7CQNHQ7?7?OOO??77>>7>>>!;;;;;;;;;;;;;;---------------------:::
...............................:?COOC>7COHQH$?7?O$$OOC?7777>>>;;;;;;;;;;;;;;--------------------::::
........................;;....-!?CO$O??CCHQN$C?C7!!!?C?C?77>>7-;;;;;;;;;;;-;--------------------::::
......................-?O$HOC??$OOOO?77COQHH$O!--!7777CCC?77>>:;;;;;;;;;;------------------:---:::::
....................-?$QOOHQOO$OONHO$$Q$OQQQ>;-!??COC??CC?>7>>!;;;;;;;---------------------:--::::::
.................;!C$$$CO$$Q$OOOOHHQHQQQQQO:;:77CCCCC?????7>>7!;;;;;;;------------------:::--:::::::
...............:7$Q$OC>-CO$QO$OO$$HQNNNMMQ!-:7??????C?????77>7>;;;;;;;------------------::::::::::::
.............!OQ$OO?!---?$OQOHCOOON$HNNNH7>>7?????77C777??777>?:;;;;;;;----------------:::::::::::::
..........;>O$$OO7!::---?OOQ$$C$CCN$HH$C77??????77>>77>>77>777$HQO?7>:;;--------------::::::::::::::
........;!O$OOO7:::::::-?COQOO?QC?N$HQC>7???????7>>77777>7>7?ONMMMMNHNH$O?7!----------::::::::::::::
........>COOO?!::::--:::?COQ?$CC$?N$HN$>>7??C?77777???????C?OQHHHHNNMNMQQQQNH?-------:::::::::::::::
.........:OC7!:::-:::::-COO$?HOOO?N$HNQ777???7>>7OQQOOOOO$Q$HHNNHNNMNHMQ$QQHHH------::::::::::::::::
.........;?!::-::::::::-CCO$COOOOCN$HNO777777?>CHHMHHHQQHQNCHNNNNNNNNHNQQQ$QNQ7----:::::::::::::::::
..........::::::::::::::OCQ$OOCO$OHQHN$>>?7>77ONN$NOQ$OOHQH$ONN$NN$HNHQQQOQOH$C----:::::::::::::::::
..........::!:::!!!:::::$CH$$OQ$$QHHHQQ77777>ONNHONO$$OOHQHH$QN$HN$NNN$QOQ$$QQO---::::::::::::::::::
..........:::!!!!:::::::$CN$$OOOCHQHQC$HQO$QO$NNH$HOOO$OH$HNHHN$QQ$HNN$QOQO$$Q$--:::::::::::::::::::
..........!!!!!!::::!!!7$ONO$$O$ONQNOCOHNHQNNQNNHQH$$H$$NQNNNNHQHN$HNN$HOQQ$$Q$--:::::::::::::::::::
..........!!!::::::::::C$$HO$OHO$N$NNQHH$OQNNNNNQNQQ$$$$NQNH$QHHNNOHNNQHQO$Q$HQ-::::::::::::::::::::
.........;!::::::::::::QOHQ$Q$$O$MQNMNNMHHQMMNMMHMH$HQQHMHHOCOOOQ$NNNNHHQQN$HQ$-:::::::::::::::::::!
.........-::::::::!>?COQOMQQQQQQNNNNMMMMMMMMMMMMNMHQHNHNMMMHQHQ$Q$HHNNMHHQQ$NQ$-:::::::::::::::::!!!
.........:::!>7?CCCOO$CHHNHNMNMHMNHHHHNNNNNNNMMMMMHNNHHMMMMNHNNMMMNMMNMHHHHQMHC-:::::::::::::::::!!!
.......:-!COCCCCCCOOQH?QQMQQQQQQHMQ$$$QQQQQQQHHHNNNNHHMMNNMMMMMMMMMMMMNNHNHNMH>::::::::::::::::!!!!!
......;7????CCOOOOOQ$OOQ$MQQ$HQQHMHHNMMMMMMNNNNHHQ$MMHQNHHHMNQHHHHHNNMMNNHNMNQ---::::::::::::!!!!!!!
........;..-;;;-::!?C??$$N$O$OQOQMQNNNNNNNHNNNNMMNNNMHHQHQQMMHNMMMNNHHHHHHHHNNQQ$$OCC??:::::!!!!!!!!
...........;;;;;;;;?>7COONO$HO$C$M$HNNNNNNOONNNNNNNHM$$QQQHHMQMMNNMMMMMMMMMNHMNNHHHHNNHC::!!!!!!!!!!
........;;;;;;;;;;;;!7OOOH??C?C?CHO$HHHHHHOCHNHNNNHQM$$HO$QQM$MNNNNNNNNNMNMMHMNQQHHHHMQQ:!!!!!!!!!!!