.......................;;;.;;;;;;;;;;;;;;;;;;;;;;;;;-------------------
............................;;;;;;;;;;;;;;;;;;;;;;;;;-------------------
............................;;.;;;;;;;;;;;;;;;;;;;;;-------------------
............................;;;;;;;;;;;;;;;;;;;;;;;;-------------------
...............................;;;;;;;;;;;;;;;;;;;;;;;------------------
................................;;;;;;;;;;;;;;;;;;;;;;------------------
.................................;;;;;;;;;;;;;;;;;;;;;;;;---------------
..................................;;;;;;;;;;;;;;;;;;;;;;;---------------
.................................;;;;;;;;;;;;;;;;;;;;;;;---------------
............::.....................;;;;;;;;;;;;;;;;;;;;;;--------------
.............>?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:!!!!!!!!!!!