....................................................................................................
..:..:..:.::::::::::::::..:..:..:.:::::::::.:..:..:..:..:..:..:..:..:..:..:..:..:..:..:..:..:..:..:.
......8:.;@@@S8@S8@S88S8;..:..8:..88X8@S8@@t..:.8:....8:....8:....8:....8:....8:....8:....8:....8:..
..:.8;.88S888S@88888888X88:8:::; 8888888888S8%8.:8::.::8::.::8::.::8::.::8::.::8::.::8::.::8::.::8:.
...::@8888XXXXX@@X@SXX.8@@8.88:t@88@XXXXS@8@X@X8S.:..:....8:8:...:....8:8:...:....8:8:...:....8:8:8:
.::@88888888888888888888@@%@XSX@8X88888888888888888.8:.8:.8::8:8:..8:.8::8:8:..8:.8::8:8:..8:.8::8:.
: %;8X8888888888888888888888@S%888@8888888@8888888@8 .8:8::8:..:8:8:8::8:..:8:8:8::8:..:8:8:8::8:.8:
.X8X888888888888888888@888@8%@@:88888888888888888@@8X::8:8:.8:8:.8::8:8:8:8:.8::8:8:8:8:.8::8:8:8::.
:XX88888888888888:8S8888@88S8888888888888888888888888@ ::.8::8:8::8::8::8::8::8::8::8::8::8::8::8:8:
8888888888@8X@88X8;8@@X@@XXXS88:8X8888@@8@8;@8888@888888.8:.8::8:8:8::8::8:.8::8::8::8:.8::8::8::8:.
8888888888X@S888888@8888888888888S8%@8X88:8@888888S@88; 8;.8;8::8::8:8:8:.8::8:.8:.8:.8::8:.8:.8::8:
8888888888888@8888888888888888888@8S8.8X@88888.88@8888X.X.8;.:8::8:.8:.8:8:8:.8::8::8::8:.8::8::8:..
8888888888888888888888888888888888@S8t%88888888888888888t8t.8:.8:.8::8::8::.8::8:.8:.8:.8::8:.8:.8:8
88888888888888888888888888888888888@X8St88888@8888888888X@@@.8::8::8::8::8:8:8:.8::8::8::8:.8::8:8::
888888888888888888888@888888@88888888X8X;88888888888888888@@8@8::8:.8:.8:.8::8:8:8::8:.8::8::8:.8:8:
888888888888@XX88888S@S@S%SX%XX8X@@888 88X8888888888@@8888X88;  8;8::8::8::8::8::8:8:8::8:8:8:8::8:.
88888888888888 8 88;8:8;8%88888X8.8S8888S@@888888888888X8888:8@8tX.8::8:.8::8::8::8:.8:8:8:8::8:8:8:
88888888X88:8@888.8888:@888@X8@88@X8%X88S8t88888888888.8:8:8S888;888 8:8::8:8:8:8::8::8::.8:8::8::8:
888888@8%@8;8%@S@8X@X@8X88@X@@8;88%Xt8%8XS%%88888S8S;X%88@@X@X8t88S8t:8:8:8::8:.8:8:8::8:8::8:8:8::8
8888888@%8@8@888@@@88@@88@8888888888:8X88@8@@888@S88@88XX@88@@SS@8X8.8::.8:8::8::8::8:8:8:8::8::8:8:
888888888%8@8.X8X 8:8888t;%t;t;;.:..@%8tX88%;88X888@XS@8X@ @@88t;%t:::8:8::8:8:8::8::8:.:8:8::8::8:.
888888@XX@@88 .@  88:; ;:::::. 8 .  : S8%SS888@8X;. @:;:;.  tS @.8X88.:8:8::8:.8:8:8:.8:8::8:8:8:.8:
8888888888@X888888% .X8:..S8@8.S .  . X888%8888.t8.tS .@SX:. : ;;Xt8 8::8:8::8::8:.8:8:8:8::8:.8:8:.
8888888888888888888%::@@   8t  S ..  . ;8@88S8X X..%8   8..% :..8tS@ :8::8:8::8::8::8:::8:8:8:8:8;8:
8888888888888S:8S8;88@8t;.  .  : :..... 88@88;: S  88....:.S . 8;@8t 8:.8::8:8:8::8::8:8::8::8::8::8
88888888888888XXS8888XX888@SX:8X@X@@@t :S8888XS@@%%X%S%tS@:8  @88@8 8;.8:8::8:.8:8:8:.8:8::8::8::8:.
8888888888888888X88@88S8S8:8S8SX88@888.8S8X%88888@@X@%8@@888X@8S;@ .:8:::8:8:8::8:.8:8::8:8:8::8:8:8
888888888888888888@X8X888:X88S@@8888@8XS8t8888S%t8888@88888@8@%:% :..:8:8:8::8:8:8::8:8:8::8:8:8::8:
8888888@888888888888888XX8t88t8@t88X;%8X@88888%88888S88888X:88X88  .:..8:::8::8::8:8::8::8::8:8:8::.
888888888888888888888888888888@88888XX888888888@XS88S8X88888XX8@%@@t.:8:8:8:8::8::8:8::8:.8::8::8:8:
88888XXX@88888888888888888888888%@:8888888888888888@S8;S888888888@@@ 8;.8::8:8:.8::8:8::8:8:8:8::8:.
8888X@S@88X888888888888888888888888888888888888888888888t88888888@@:S;.8;8:.8:8::8::8:8:8::8::8:8:8:
88@88@88X.88@888888888888X888:8;8888888888888888888888@@8@8888888@@888 :.8:8::8:8:8::8:8:8::8::8:.8:
888%8@88@@88@888888888888@@8@888888888888888888888888888@8888888@@@Xt. 8::8:8:8::8:8::8::8:8:8:.8::8
8888@X888@8888X8X888888888888888888888888888888888888888888888888SXt   .8::8:8:8::8:8::8::8:.8:8:8::
8888888@88@888888@@XX8888@@888888888888888888888888888888888888@888; 8 8:8::8::8:8:.8:8:8:8:8:8;.8:8
888888@8t8X8@8@@888888888@8S@88888X8888888@8@8@8@8@8@@8@8@888t@@@S8  S  .:8::8::8:8:8::8:8:8;.:8::8:
8888888@@8X888@8888@@@@@888888888888@88S8S888888888888;88888:8@8@88 8 8 :..8::8::8:8;8:8::8:8:8:8::.
8888888888888@888888888888S8@@8%8888888888888888888888@8@888X888S@@   8...8:8:.8::8:.8::8::8:8::8:8:
88888888888@88@888tXX8888888888888@88S@88X88888;888;8888888S8@88@X   ...8::8:8::8::8::8:.8::8:8::8:.
8888888888888888@@8X888888888S88888S8@X@@@@8XX@8@X88@X@8XXX8888888  ..8::8::8:8:.8:8:8:8::8::8:8::8:
88888888888888888888888t8888SS8888S888888888888888888888888888SS@   .8:8::8::8:8:8::8::8:8:8::8:8:.8
888888888888888888888888@88X88S@8SXS88888X8X88888S88888X88@@8888  .:8:::8:.8::8:8:8::8::8:.8:8::8:8:
8888888888888888888888888@8@@8X@888@888;8;8;S8888888 8888S@88888t.:.:.:..8::8::8::8:8:8::8::8:8::8:.
888888888888888888888888888888888@@88888888888888888888S88:88%8: :..8:..8:8:.8::8::8:.8:8:8::8:8:8:8
88888888888888888888888888888888888888888888888888@;:88.%t%X8X  :..8:.8::8:8::8:8:8:8::8::8:8::8::8:
8888888888888888888888888888888888888888888888888888t8888@X88   :.8::8:8::8:8:8::8::8:8:8::8:8::8::.
888888888888888888888888888888888888888888888@8S@ 8@888888XS@88XSt:.8::.8::8::8:8:8:8::8:8:8::8:.8:8
8888888888888888888888888888888888888888%888@@XX@8@8888@@8888888@88 :8:8:8::8::8::8::8::8:8:8:.8::8:
88888888888888888888888888888888888888XS88X8@X88%88888@X@S88888888X8:t.:8:8:.8::8::8:.8::8::8:8:8::.
88888888888888888888888888888888888@8888@S88X8@8@@8@X8.%.tS88S8888888XS :8:8::8:.8:.8::8::8::8::8:8:
88888888888888888888888888888888888@St;88X%888X@8@%t88tX. %@8S8888@8@88S :8:8:.8:8:8:8:8:8:8::8::8:.
888888888888888888888888888888888888@8@888888;S888888 S%:S8@@888888888X88 :8:8:8::8:8:8:8:8:8:.8:.8:
8888888888888888888888888888888888888X88St8@88@@88 t :8@S@88888888888@@SXS8..8::8::8:::8:::8:8::8:8:
888888888888888888888888888888888888888X8%S888tt.% .%88888888@8Xt88888888@8%.;8::8::88::88::8:8:8::8
8888888888888888888888888888888888888888t88X8888S%S@88@8@888X%S@8@8888888888X.:8:.8:::8:::8::8:8:8::
8888888888888888888888888888888888888888888%88@@8@%SS88888S@8%88888@88@88888@8 :8::8:8:8:8:8::8::8:8
8888888888888888888888888888888888888888888@888888S8S;8@88X8888888X@8.88888@8t 8:8:.8:.8::8:8::8::8:
88888888888888888888888888888888888888888@8%8888888@@S@88SX@888888@S888@8@%88S%::8:8:8::8::8:8:8:8:.
888888888888888888888888888888888888888@S8 8X888888888@@8t8@8888XX@8@8@@S8888@% 8:8::8:8:8:.8:8:8:8: