........................................................................................................................................................................................................
........................................................................................................................................................................................................
........................................................................................................................................................................................................
........................................................................................................................................................................................................
........................................................................................................................................................................................................
.......................................................................................................................,,...............................................................................
..................................................................................................................,::=++=~~::,..........................................................................
............................................................................................................,:::::=+7$ZZ$II?++:,........................................................................
....................................................................................................~++++==:~==+=+?7OOO8O$II?+=~:,......................................................................
...........................................................................................,.....,:,~~?77I7$$777III7$Z8D8O$I???++=~:,,..................................................................
.......................................................................................,~=??+=~=++??I77$$7$$ZZZ$$OOO88888O$$77I++???+==~==~::,..........................................................
......................................................................................:?II$$Z$$$$I$$$Z$OZZ$$Z$ZZOO8DDDDDD88O$$$II77$Z$$III?II=~,........................................................
....................................................................................,??7$$ZZZZZZZZ$$$$OZO8OOOOZZOODDDNNNDDD8ZZ$$7$$ZZZZZ$7I7I+?+~~,,....................................................
....................................................................................+~7ZZOOZZOOOOO8OOOZOO88DD88888DDDNDNNNNDOZZ$Z77ZOO8Z$77II777I?++=~~,................................................
.....................................................................................?$OO8OOOOO8888888OO88DDDDDDDDDDDDDNDDDD88OZ$77O88O8OZ$I7777$7777$I?=:..............................................
.....................................................................................~?Z88OOOO88888O88D8888DDDDDDDDDDDDDNNNND88OZZOND88D8OZ$$77I7ZOZOOI77I+:............................................
.....................................................................................,:$ZOOO8888888OO8DDD888DDDDNDDNNDDDDNNDDDD88O8DDDDDD88Z$$$$ZO88O88$I+?+,...........................................
.....................................................................................,=$OOOOO88OOOZZOOOO888DDDDDDDDDDDNDDNNNNDOZ8D8DDDNDD88Z$$ZOOO88OO88O7I?+~..........................................
...............................................................................,..,~=I7OOO88OOO8OOOOOOO8888DDDDDNNDDNDDDDDDDD8Z$$8D8DDDDDD8OOZO88O88O$Z8OOZ$I=..........................................
..................................................................................,=?ZOO888O8O8OOOOOO8O8OO88888DDDNDNNDDNNNDDDZOZOODDDDD888OZZZOO8OOZZZO888O7~,,........................................
................................................................................:~I$O8O88O88888888888OZZOOOOO88DDDDNDDDDDDDDDNOZOO8DDDD8888OOZOO88D88OO88DDDO$=,........................................
...............................................................................:IZZO8888888O888DDD888888DDDDDDDDDNNNNNDDDDDDD8ZOOOODDNDD8O88888DDNNNDDD88DDND8I:........................................
..............................................................................=?ZZOO8888D8888888D88D8888DDD8DDDDDDNNNNDDDDD888O8O888DDDDD88DDDDDDDNDNDDDDNNND87~........................................
............................................................................:+?IZZ88888DD8DDDDD8DD8888888888888DDDDDND8D88888888888888DDD88DNDDD8DDDDDDD8NNNDDZ+........................................
..........................................................................:+I7ZZZO88888DDDDDDDDDDDDDDD888OZO8888DDDDD88O8888888888888DDDDD888DD88DDDDDD8DNNNDDZ?,.......................................
........................................................................~=7$ZOOOZO8D88DDDDDDDDDDDD8D88O88OOOZ$ZZZOO8OOOOOOOO88888888O8DD8DD88888ODDDDD8DDNNDDDO7:.......................................
......................................................................~,:7$ZOO8OO888DDDDDDDDNDDNDD88DD8OO$$I?IIII7$ZOZZOOOO888O88888OO8DDDD888888DDDD8D88DDNNDOZ~.......................................
......................................................................:??$ZOOO888O88D8D8DDDDDDDDDDDDD88OZ7I?+==++?$$ZZZO88OD8OOOO8OOZOODDDDD88DDDDDDNDD88DDDDDOZ=.......................................
.......................................................................~+$Z88888DD888888DDDDDDD8DDDDD88ZI??=~:~~=+7$Z$$ZO88OOO88OZZ$OO88DDD888DDDNDDDDDD8D8D88ZZ~.......................................
........................................................................~7ZOO88DDDD8$I$O888888888DDDD8$7+=~:::::~+I$$??I7ZOZOOOZO$77$DDD8DD8OODDNNDDNDDDD888D88Z,.......................................
.........................................................................=7ZO888DDDO?+?7ZOOOOO88DD88OZI+:::,,,,:~+7I+==?I$$ZZ$ZZZZ$I?ONND888888DDDD8DDDDD8DO8D8$,.......................................
.........................................................................=IZO88DD88$+++?7Z888O888OOO$I?=::,,,,,:=++~~~~=?7ZZZ$$Z7$$IIZND88888DDDDDDD8D8DDD888DO$,.......................................
.........................................................................=?ZO88888O?====++I7I77I+=~~:::::,,,,:::~~::~~:=+7$Z7III77$I?$8D888DDDDD88888888DD888D8Z:.......................................
.........................................................................~?ZO88DD8Z?~:~~~~~~:::,,,,,,,,,,,,,,,,,,,,::=~=+I7I?+I+?I???7ZO888DDNDD8OO8O88888OO88OZ~.......................................
.........................................................................=7OO888D8$=~~:::::::::,,,,,.....,,,,,,,,,,,::~++?++++=+I?+++77Z88DNNND88OOOOO88O8OOO8OZ:.......................................
.........................................................................+7O8888DD7~::::::::::,,,,,,............,,,,::===+======?+~=+I7O88DNNDD8OOOO8888888888O7........................................
.........................................................................:IZZO8888I+~+====~::,,::,,,,,............,,,:,,::::::~~=?==+IZ8DDDNND88O888DDNDDD88DD8$I:......................................
..........................................................................~~:,,,::+?7II7$$$$I+=~::::,,,,,,,,,,.,.,,,,,,,,,,,,,,,:=7$$ZZONDNNND8888DDDNNNNDDDDDD8+.......................................
..........................................................................:ZO$+=??I777$$ZZOOOOZZ$I+=::,,,,,,:,:,,,,,,,,,,,,,,,,,,:~+?+?ZDDDDND8DDDDDNNNNDDDDDDDO~.......................................
...........................................................................7O777$Z$777II77$ZZZOZ8ZZI=::,,,,::~=~=~~:::,,,,,,,,,,,,:~==+7DDDDDDDNNNDNNNNNDDDDDDD8~.......................................
............................................................................7+I7$Z7=?I$ZO88888O8OOO7?~,,..,:=I7$ZOOZ$7II?+=~~:,,,,:::~=IDDNNNNNNNDDNNNNNNDDDDNDO~.......................................
............................................................................,::,~I+:=?I777$$$ZZO8888D8+:.,,~+$ZZZO88O8OZZ$$$7I+~::::~:~7DDNNNNNNNNDNNNNND88DDDDO:.......................................
..............................................................................,..,:::~=++++?++???II78DDD888$77$7I7I7I7$$$IIII$O$$7I=~~=I8NNNNNNNNNNNNNNNDDD8DD8$:.......................................
.............................................................................~.,,:::~~~~==+?????+++?8O7ZDDZ~~++?Z$O77$7I+II77I7777I=~~=I8DNNNNNNNNNNMNNNDDD8DDO7,.......................................
..............................................................................==,::::::::::::~~~~~=Z+:::ID$~~~~=+?I?++??7OZZZ77O8ZZII7Z8DDDDNNNNNNNNNNNNDDDNDD7,........................................
..............................................................................~?:===~~:::::,:::~:+Z+,...~OO::::::~++?===:~=++???+DDD8$7IIZ8NNNNNNNNNNNNNNNDDD8?,........................................
..............................................................................:=:::~~~~=====~~==I$:,,...,IO=,::,,,:::=?+?==~:::::88I+==+?$ODNNNNNNNNNNNNNNNNDOI:........................................
..............................................................................,::::~::::::::::=++::,...,,,7=~:,,,,,,,,,,,,,,,,,:,O~~===++?$8DNDNNNNNNNNNNNND8O?,........................................
...............................................................................,:::~~::~~=~~=+=~::,,....,,,77=::,,,,,,,,,,,,,,,,~+~~~=~===IO888DD88DDDDNNNDDOZ=,........................................
...............................................................................,:::~:~~~~~==+=:,::,....,,,::=++?++~~::,,,,,,,,:=Z::~~~~~==+?I$ZZ7I+IZ7ZNN8OI~,..........................................
................................................................................:::~~~~=====?~~::::,,,,,,,,,:=?+~~~~~==~~~~~==++:::~~~~~=++~+?7I?=~=++8N87~,............................................
................................................................................::~~========+?I7I+=~:::~:::,:~??+=+~~~::,,,,,,,,:::~~~====~:::~==::::Z887,..............................................
................................................................................::~~~~~======?7ZO$II??II$II==+==~~++==~::::,,,:::::~====~~:::,:~:,,,7DD7~...............................................
................................................................................,::~~~~=====+??7Z8OOZZZZZOZ$I=~:::~==~~~::::::::::~~==++=::::,,,,,,,N7::................................................
.................................................................................::~~~:?+?+=???I$ZZZZ$777I+=~~:::::~===~~::::::::~~===??~~:,,,,,,,,I,...................................................
.................................................................................,~:~~?I77I???+?????????+++==~~~:~:~~~==~~:::::::~~===+=:::,,,,,,,Z7....................................................
................................................................................,:~~~+?77$7$77?II???+++====+======+=~~:==~~~~::~~~~==+==,,,,,.,,+$$Z+...................................................
................................................................................,~~~~==+++7Z88Z$$7IIII?I????+++?IIIII=~:~~~~~~~~~~~=++++:::,,:+8Z~,,:::::...............................................
................................................................................,:===~=~~~~=$8887I+~+++?7777II7I77777+=::~~~~~~~~~~=++I7I===I8DZ?+=~:::,,...............................................
.................................................................................:===~~~~~~:=+++???II?????77IZ88$?===++::::~~~~~~~=++IODNNNNNDO?======~:::::::,,,,,.....................................
.................................................................................,=++==~~~~~~~==~::::::::~~~~~::,,,::~~::::~~~~~~~=?778DNNNNDNOI?===++==~~~~~=~~~::::,,,................................
................................................................................,:=++==~~~~:~~=++==~~~~~~~~~:::,,,,::~~~~~~~==~===+I?I8DNNNNN887===+++==~=~==~~~~~~:::::::,,,,..........................
...........................................................................,:~~=++=====:~~~~~~=++??+++==~~~::,,,,,,:,::~==========?III8DD888ZZZ7?=+?+==~======~~::::::::::~::,,,........................
......................................................................,,,::~~~==+~~====~~~~::~~=++???++=~::,,,,,,:,::::~=~~===+++II?+?Z88ZZZ$$Z7++++==~~~~==~~~~~::::~:::::::::::,......................
...................................................................,,:::~~~~==~=~~~==~~~::::::,::=++??=~::,,,,,,,,::::~~~~===++???+=+?$OOZ77$$Z?+=++~~~=====~~~~:~~::::::::::::::::,,...................
.................................................................,,,::~~~~~=~=~~~~+?+=~~::::,,,,:~==?+~:,,,,,,,,,,,,,:::~~====+?I====?$ZZZII77$?==++~~~===~~~~~~::~::~::::::::::::::,,,.................
.............................................................,,,,:::::~~~~~====~=~Z$=++~~~~:::::::::::,..,....,,,,,,,:::~~==+??==~~==+I7$$7?I$7+=++=~~~===~~~~~~~:::~::::::::::::::::::,,...............
.........................................................,,,,,,:::::~~~~~=~===~=+$I+++??=~~~~~:::,,,,,,..,...,,,,,,::::~~==+II==~~~~~=?I77I+?$7++?~~==========~~~~~~~::::~:::~::::::~~:::,..............
..................................................,,,,,,,,::::::::::~~~~~~~===~+Z$?++??II?==++=~~::,,,,,,,,,,,:,:::~==~=??II+=~~:~~~~=+?III=+II+=+~~~====~~===~~~~~~~~:~::::::~::::~:~~::,,.............
................................................,,,,,,,,:::::::::::~~~~~===~==~IZI++?+?I77I?7??~=~~~~::::::,,:~~~=++++?III?+=~:~::::~=???7I++II+==============~:~~~~~:::~~~:~:::~:=~~~~~::,.............
.............................................,,,,,,,,,,,:::::::::~~~~:~~=~~==~?$7I?????I77$$7I7$7??II?+++?+==?I777$$7$7II?++=~~::::~~~+??I?=+II+==~~======~===~~~~~~~~::~~:~~:~~~=~~~~~~~~:,............
.........................................,,,,,,,::::::::::::::::~~~~~~~~~====+77I?+????II7$$OZOOOZO8OZZ$$ZZ$$O88OOZZ$77?+++==~:::::~~=+??I?=+??+====++======+=~=~~~=~~~~~~~~~~~=========~~:,............
...................................,,,,,,:::::,,::::::::::::::::::::~:~=====++II????I??II7$$OO888DD8D8888DD888OOZZ$7I??++==~~~~::::~==++?+=++?+=~===+=======?=~~~~~=~~~~~~:~~~~=~=~====~~~~,............
.................................,,,,::::,:::::::,::::::::::::::~~~:~~~=~===++?I?????I??I7$$ZOO88DDDDD888DD88OZZ$$I??+++=~~~:::::::~==??+===+?+~====+=++====?=~~=====~~~~~~~~==~==~====~~~~:,...........
..............................,,,,,,:,,:::::::::::::::::::::~~~~~~~~~~====+++++??++?II?III77$$$OZZZOOOOOOOOOZ$$$II?+++==~~~~~~~:::~~~??I====++=~~~==++++====+=~====+=~~==~~~~+~==~~=====~~~~,...........
...........................,,,,,:::::::,,:::::::::::::::::::~~~~~~~~~===~===+++++++?III?I?7$$$$ZZZZZZZZZ$$$$777I??++=~~~~~~~~:~::::~+?I+=~==++=~~~=+++++===+?===++++~~~~=~~==~~========~~~~~:,..........
.......................,,,,,,,::::::::::::,:::::::::::::~:~~~==~~~~~~+=~=~==+++++=+?7II??II77$$Z$$$Z$$Z$7777III??+==~~~~~::~~~~:::~=+I==~~~=+=~~===+++++====++=+++++=~~~~~=+=~===~+===~=~~~~:,..........
.....................,,::::::::::::::::::::::::::::::::~::~~~=~~~~~~===~~~===+??+++?IIIIIIII77Z$ZZZ$$$7$7IIII??++=====~~~~~~~::::~=+?I==~======~===+++++===+?+=+++++=~~===+=~=+==+=====~~~~~:,,.........
....................,:::::::::::~::::::::::::::~~~~~:::~~~~~=~~~~~~~===~~====+???=++?IIII?II77$ZZ$$Z$$$7I??++==+=++=+=~==~~:::::~=+??==~~~~+=~~~==+=+++====+??=+++?+=====++~==+===========~~::,.........
..................,,,:::::::::::::::::::::::::~~~:~~:~::~~~~=~~=========~~~==++??++++?IIIII7I77$$Z$$$Z$$7??++++??++++====~~~:~:==+?I?=~~~===~~~====+=++=====+?==++++~~==++========++=======~~:,.........
................,::::::::::::::::::::::::~::::~~~~~~:~~~~~=~==+==~=~+===~~====++??+==++?7III?II77$$$$ZZ$$7I????I?+?++==~~~~~~=I+=+?I+=~~~~===~=~===+=+?====++?==++?+===+?+==++++++==+=~~====~~:,........
..............,:::::::::::~::::::::::::~:::~~~~~::~~~~~~~~~~====~~~====~=~~====+???==++?II77I77I77$$Z$$$$$77IIIII?+===~~=~~==+I=?+??=~~=====~======++++=====+?==++?+~=+??+==++==++==+======~~~:,........
..............,,::~:::::::~::::::~~~~~~~~~~~~~~~::~~~~~~~~~====~====~~====~~===++??++==+II7IIIIII777$$$$$$Z$$$7I?+===~=====+7Z+???7=~~~~===~~~~~====+++====++?+=+??+=++?+=+?++=++++====~=====~::,.......
.............,,::::~::::::::::::::~~~~~~~~~~~~~~~~~~=====~==========~=~~~~~======+?II==++?II77IIIII77$77$77I7I?+=====++++=?7$=?+?I?~~~~~~=~~~=====+++++=====+?+=????++?I+=++++++=++=+==+=~===~::,.......
............,,::::~~::::~:::~::::::~~~~~~~~~~~~=~~~=====~~=+===~===~======~=====+++?I+=~=+?II777III7777$777III??+????====II$=??+??+=~~~~~~==~=~===+++++====++?++?+??+?I?+++++++++++?=========~~:,.......
............,::::::~~::::~::~~:~:::~~~~~~~~~~~~~~~======~=~=+=~===========~=======+?II?=~~+??II777III77$$7$7I77I7I???+=+?I7+I++I=?=~~~~~~~~~~==~===++++=====+?+=+?I?+II??+?++++=++++=======~=~::,.......
..........,,,:::::~~~~::~~==~~~~~:~~~~~~~~~~======~========++==~~=======+~======+++++I7?=~:==?I777III77I7$$Z$$$$7II????I??=?+?++?+=~~~~~~~~========+++++====+??++???+I++??++++++++++========~~~:,.......
.........,,::::::~~~~:~~~~==+==~~~::~~~~~~=~~======+===========~~=====+==========+=+??I$7?~:~==+?I77IIII7777$77$7I77II?7=????+?++=~~~~~~~~========+++++=====++??+?????+?+??+?++?+?+========~~~~~,.......
........,,::::::~:~~~~~~~~==++==~~:~~~~~~~~=~=====+=++=====+==~~=================+==++?I77?=:~~=+??I7?IIII77$$$77777I??~?7II++=+?=~~~~~=~~~=======++==++=~==+??+++??I?II+?+???+++?+=========~~~:,.......
.......,,:::::~~:~~~~~~~~===~==+=~~~:~~~~~~====+==++=======+=========+========+++==++=+?I777I+=~~=+?I?I????II777I7II+~I77?+?===++=~~~=~~==~=~======+++===~=++I+++??II??????++?++?+=======~=~~~~~:,......
.......,,::::~~~~~~==~~~~~~~~~===+~~::~~~~~~~==+==++++++====+==============~===+++====+=??I$$$$?+====++++=====++=~+$7$7I++?++=+?+=~~=~~~~~========++++=====+????+?I?????+??+?++??+=========~=~~~:,......
......,:::::::~~~=~==~=====~~~~==++=~~:~~~~~~==++++?++=+=========+=====================+++?I7$$Z$$7??===~=~==+IIIZ$777?+??+==+??=~~~~~============+++======+????+?I+?????I??+???+=+===========~~:,......
.....,,:::::::~~~=~==~~~~====~~~~+++~~~~~~=~==++?+++?+++======~=+========+========+=+++=++??II77$$$ZZZ$$$7$7$Z$ZZZ?I?+?+?====+?+=~~~~~~~==~===++=+=++======+?I??+?II????I?++???+=+==========~~~~::......
....,,:::::::~~~~~~=+~~~~======~~~+++~~~~~====+++?+?+++++=++===========~============+==+==++?+?II77$Z$ZZ$Z$$$7III?=+?=?+=====??=~~~~~~===+=~=++==???+======+????+?III???I+++??+===========~===~~~:,.....
....,:~~::::~~~~~~~===~~==~=====~==+++~~~~~===++++?+?+++===++===============================+++?I?IIIII7777I??=??===+??=====+I?+~~~~~~~=+++II=+=?=??+======+???++III?I???++???+==+++======~~=~=~~:,.....
...,:::~~:~~:~==~~==================??+~~~~~==+?+++++==+================~=========+==========+=++?+?????I?+++======+?++=====??==++=+?I?+=+++I??=++========+++?????I??I?+++???+=+++=======~~~~~~~~~:.....
..,,:~::~~~~~~~~~~~==============~=+??I=~~=====+?++++==+=======~========~==+======~=========~~===++++++++++++==+==+?+++===++I++====?+++?+===~~============++??I??I?III?++??+++=++++======~~===~~~~:,....
,,::~~~~~~~~~~~~~~~==+=~=====+======+?I?=~~===+?++?++=+++=============~=~===================~~===~======~~===~===+??++====++I?==~=~~=~~~==~~==============++?????II?I+++??+++=+++++========~~~~~~~::....
:::~~~~~~~~~~~~~~~~==================+?I+=~~~=+???++=+=++====~==~=======~===+==~=======+====~===~~~~=~~~~~~=~===???+=+===++I==~~~~=~~~===~~=========++====?I??I???II++++=+++=+++=+=======~===~=~~~~:,...
~~~~~~~~~~~~~~=======+====++====+===++?II+=====????++=++==+===============~=================~=~~~~~====~~===~=+???=======+??=~~~~~~~~~~==~~~~=====+++++==+?????+??I++=++?+++=+++=+==~==~~=====~~~~~::...
~~~~~~~~~~~~~=~==~=~=====++++=========+?I?+===++++++++?+=========~=======~=======~===========~=~~~~~=========+???+=======?I?~~~~=~=~~===~==++======++++++=???II??7?+++++++++=++++============~~~=~~::,..
=:~~~~~~~==~~~~~~==+======+++?+=+==++=+?I7++=+++++++?+++++==============~=======~~==========~==~=~=~==~~~=~=+???========?II=:~~~=~~====~++++?+=~==??+====???I7I+II++++++++==+++++++=====~=~~~~===~~~::..
I===~~===~~~~~~~===++=+===++??+++=====++?II?+++?+++?+??++==+==============================+====~~~==~=====++?++==~=====+?I+=~~~~~=~==+=++++???+=~++++====I?IIII+??+++???++++++++===+~===~======~~==~~::.
O7+=+====+==~~~~~===+++===+?????++=====??I7?++++?++????+=========++=======~~======~==~=====+=============+?+?+=====~===?II+~~~=~~=~=+?++??++?=~~++?+?++=+??II?I??+?+???++++??++======~====~===~~~~~~~:~.
$$++====~==~=:?+??+?===+=++??????+===+=+?I7?+++I?+?+???+==============================~========~~=======+++?+==~====+++I7?~=====++=++++?+?+?+=~=++?+++==+???II???+??++++=+?++=+++=~===========~~~~~~~::,
$Z$$7IIII?+++I+???I+=+??++=+??I???++===+?I7?++??I?++++?++++==============~=====+============~====~~====+???+=~==~===+??77=~~=++++=~=+++?++++=====++?+++=+?IIIIII?+?++?==???+++===========~~~====~~~~~::~
ZZZ$Z$Z$$$$77I+?+77+I???+++???III?++++++?I$7?+?I???+???++=++=============~==========~==~======~======++??+===~~~~==++??7?=~~?+=~=~=++++=+???+=====?+??==+II?I?I7?+?+?+++?+++=============~====~~~~~==~:~
ZZZ$ZZZ$7$77I$I?777I????++=+=I?III+?+++++I77???7I7II???++==========================~~~~====~=~=~~~===++?++========+++?II+~~~=++===~==+==+++++====+++?+==?IIIII7I+++++=++++?++============~=========~~~:~