##################################################################################################################################################################################################################################################################
#=,-,-=:=-,-=====---==-====:=--::=-=:, .,-,,---,...-===-,. ....-=,.,,..,--===,,-===-;+/:--=:;;:;;-;+/++++%$$%%$$$$+++%%/;/%%%$$$++++///+/;:::;++//++//::==,,. .,. .-,..---....,,,,....=:,.,,,,.......................... ... ............................ .#
#..-,,,,--,.,,,,==,.---,--=-===,.=:--=. ,,,----,....,-==-.. ,==,.,,.....,---..==-=;/;=-,,=::=;:--::;/+/%%+++%%$%+/+%+/;+$$%$$%//++;;///;;;::/++////;:=-,... ... .,. ,-,,,...,,... .=- ..,,. ... ... ... . ........................ .#
#,,.,,,,,-,.. .,,-=,,,----=--==,,-::::-...,-=-----=-,,,-====. ,,==,.,-,.....,-..,====;;;:-,-=:::==-,=:;+++%%///+%%%+/++%//+$%%$$%;;//;;/+/;/+////+/;//;;;-...,. .... .-. .--,,,..,-,.-. =-...,-,...,,................. ..... .. ....,.............,..........#
#-.......,... ....,--.,------,-==--=====,.,---,,,,===-,,..,-, .,--.... .,. ..,..,=::===::====:=-=;=-=:;+++%%//++%$%%+//%//%$$++$/:;;:;+%+//++///++//;;/+;- .,. ....,. ,,..,,..,..,. .=...,,,............... .. .. . .. ... .................... .......#
#=-,,........ .... ...,------,,,=-..,---------,,.,-===-,..,,.. .=-,--,. .,,.....,,===--====--,==,=;==:;/%%%+////+%%$%+/++/%%%/;++;:::;++++////+//%+//////=, .,. . ... ,...,,... ,,. .-...,,,................. ... ... ................... ... .#
#:===-,.... ...,, ..,------,,,-----,,-----=-,,,.-==:::===,..--,,=--==-,..--,,,,..,==-,,-------,-,,=::;/+$$+/++//+%%$$///+++//;/;;::;://+//+/////+++/////:=. ,-, . ., .. ,...,......,. ,,...,,....................... .... .....,...,...,.............#
#;;;;::-,===,..,-,,--.. ,==---,,--=--,.,,,,----,..,--=::======,,,,,-----;/=,.,,-,-,.,.-:=,.==,-==-,,.,=:/+$$$%/+%%+++++%+//::;;;/;:;:-=;//+%+///:/+//++/;+/;:=,.,,-. ,. .,. .. ............ ................... .... . . . ....................... #
#/;:::;;;:====- .,.--,,..---==-,,-==,,-,..----=-,,====::-,,-:=--==---=;::;=,.---,--.,,---,,,--,,,-,,..-;/++%+/;+++///+/+%/=:::;;;:::=,=/+/+%+;;;;;;///+/::;=:-,,,-,.., .. .,......... ... ......,........... . ...... ........................ #
#;;/;:;/;::====, .,,..-=:-,==-=-,..,----,,,.,-,-=-,,-===::=-,-========--::::=-,-=-,=-,,.,--,,-,..,,,...,=;/++/;;:;;:::;//+/:-===:;;==;=-://%$+;;::;:;////:=:=:=-,---,....... ,.. ,,........ .... .,............ . ........ ....................... #
#;;//;/:=-=-,.-=, . .-=-,--,,--,,,,---,,..--,,,-----===:=---==-,----,-::=::--=-,-----....,--,..,,.,,--=;++;;:==::==:;;;/;=----=:==::=:/;/%%/:=:;:=:;:=;====:=-=---. ..... ., ............... ....,.............. ...... . .............. ...... #
#+/++/;:----,. ,=,. . .=,.---,,,,,,,--,,,,,,--.,--===--==:=---.....,-,-:--=:===-,-=-==.. .,,,...--,,,,-=;/;::=--===-=;::::=,,,,====:;;//++//;==:;:===,-:=====-====-....... .,. ., ..,,........,,,.............. ... ... .. .......... .. ... #
#++++%+;===-,,. ,=,,,... .,. ,,,,..,,,--,,-,..-=--,---==-,,-=--,... .,-.-=-.,;===-,-==:=-,...,,. .,-,,--=:::::-,,-==---==-==--,.-==-=;//+%/;;;:=::;:,,-.-=-,--===:==-.... ... .,...........,.......,,,,............ ... .... ..... .......... .... #
#+/+%$$%/;:=---,.,.-,.. .. .,,....,,,--,.,,.,==-,,-==,,..,--,..,. .,,.,=, -=:==--=====--,,.,,. .-----==:::=-,,-=:::-==--==----=:=-:/++++;:;;:::;;-.--,-=,--=-=====-... .. ............,,.......,,,...... ..... ..... ....... . ... ..... .......#
#+/+%$%$$+;:==-=--=-.,--, .,.... .....,,,,,,,----==----===-,,---,..,.. ,,..== =/==:--=:::=-,,..,-,,-=--,-==:::,,.-=:;;/;=-,-,,-::=;;/:;+++%/-:;:=;;::,.=-,==--=--=====,... .. ... .. .....,-,......,,.............,.......... . ... ... ......#
#%++%$$$$$+///=:=::=-,-=-,,-, .. ,,...,,.....-,,-===------,,.,==,...,...-,,,=-.=/;:===::;:-.,-..--,-=--,,-=:;;:,.=::;/++;==-,-=:::/+$/:/%%/+:-=;:=://=,,=-,=:-======-=-.... ,. .. ... ,..,--,,,...,,,,.......,,,,,...,,..... . . ....... . ....#
#+$%/%$%%%+%$+//;;;:==,-=,,,,, ,-. .....,-,.,,.,,,,==-,,--,,,,,-=:=.,,-..,-..-==-:/;;::;::;;=,,-=-,-=-----==::;:::=:/;+/;/:===-==::;+%+/;/+%//:===:==/;=-::=----===-===-,.. ,. ,. .. .,,.,---,,,,,,,,,,,,,---------,,,............. . . ....... .....#
#+%X%%$++%%%$%+/;;/;:=-===--==- -=,.,=-,-===-==,,--==--,,-----==:;;=-,-==-----=:,..,,,,,,-:;;=,.-=--==---====:;;;:-,,,-,-:::==:==:::=--,,,:++/:=-:::=:;:==::=========-=-,,,. .,. ........,=---===-,,,,-----,,........,----,.,.... .... . . ...... . ..#
#+/+%/+/;;///;/;:=:::-----=-,,,, ,,. .,.,........, ,,,,.,,. .,-,,,,. ,==, .--,,-,. .-==-,- .,,,,....... . . -,,,,,, .--,.... . . .... ....#
#%+//+/+/;;//;;/;:=:;::--=---,,-,..,. =-,,.....,,, =----, .----, == ===, .===== -=,,,..... ... . .., .==--, .,-,,.... ... ..........M
#/%+/+//+/:://///;;:;;/:==--,,,---,, ,=-,,.....,, .:==-. .===. - .;. .:==- ==-,,..... .. .., .::= ,-,,,. ...... ...............M
#//+/+/;;+/:;;;/;;;;::;;===-,,,,-,-- :=,,.....,. ,;:=. .:; . . ;;:. :==,,.... .,, =;:. ,=-,,... ..... ...............@
#+;/+++/=:/;;;:;;;;;;:=::=---,..,--, =;=,....,, ;/;. -/ =;; .;:--,.... . .,. //, ==-,. .... . .. ............@
#%/;/+++;:;;:::::;;;:;=====-.,,..--. ,;=-,...,, %+, .-,. = =// -/:=-,..... . ...,. %: ,==,,....... .. ....... .......@
#+//////;//:=:;;::;;::::==--,..,,,= /;=,...,- .$; ;X$$$/ :+/ :/:=,,.. .., .% ;//;, :=-,....... ....... ..........H
#%;;/+////;:==::::;;::::==-,,,...-= -/=--,,,, -$. %XX$$$$= /HX. ,%X$. ;++/++%%$$$$%+/;=--,,.,,,...............---=;/%$$$$$%+ .HHXXXX+ -:=-,..........................H
#%/;;+//+;:=:=====::::::==,,-,...-- +;=-,--. ;/ ;H$$$%%$+ ,$XXX; =HHXX- /++///+%%%%%+/;:=---,,,,,,,.,,,,,..,,,..,--:;/+%%$$$$= =HXX$$$$= .;:-,................... ......H
#%+/;///;;=========::::===,,-,,..,, ;/:=--- X. HH$$%++%% XHX$$: .HXX$$- $%+++++%%%%%+/;=:-----,-----------,,,-,,-===;/+%%%$%$, -H$$%%%%+ .;:-,.................... ...H
#+++/;;;;;:==-=--===:::===-,,,,,,-. ./;=--= .H ./;;:===== =H$$%%, /X$%%%, $% -;: ,, .+, /$%++//+. .,--,=::/:-,..........................M
#/;///;;;:=:=-,-===========-,,,,-= ;;=--- ./ HX%+++. H$%+++ -$; =;= .== .+, .:+////++%$XX$$%+/;=--.......,,...........,.....#
#/;;//;;;==::-,-===========-,,,-== ,;:==, =- ,X$+/// ,H%+/// ;$- //, =:: -+= ,=///+++%%%%+/;:=-,.. ...,.................#
#+/;;//;;::=-----========-=-,--==- /;==. +- =$%/;:: /$+/::- $X. +/. /;= /+/ .=////++//;;:--,... ..................,#
#$;;/;;;;:==-----========---,,-==, =;:: @- %%+;==, X%/;==. H$ ,++ .+/, %+%. =;;;:::==--,..... ..,.........,..,...#
#$;;/;;:::==-,,-=-=======------==. ./;: .@, . .. . . .. $%/:=-. $%;=== .X$ :%/ -%+. $%+; .=;=----,,...... ..................#
#%/;/;:=::==------=======------=: , ;+= ,H- .-M@HX$$$$$XXXHXHHH, .X+;==- ,$+;=-- -X; %%= +%+ -$%++- .==,,,..... ... .................#
#+/;;;;==::=---===========---,,== ,% .+- ;H; @HX$$%%%%$$$$$$$X -$+;==- ;$+;==- +X- X$+++%$XXHHH@: $$%+ ;$+///= .==,,..... ... ................M
#//:::;:==::--=====:=======--,,=- ;M. +. $H% +X$++/+/,,,-=;+%$ /$/:--, %%/:=-, HX. .X%++/++%%$$X- XX$+= $$/;:;/+. .=-........ .... ...............M
#:;;:==::==:===-=======-,-==-,-=. $@; = X$$. ++/;;;. $%;=-,. X+;=--. H$ =$+;::;;/+++. XX$+/, X%/===:/++, ==,....... ... ..............M
#=-::--=:=-=::=-=:====--,,=-,,,=. @HX .X%+= .--. .X+;-,,. .X+:-,- ,X+ +%/:=====:;. ,@H$+/; .$+;=,,-:/+%%- .:-,..... ... ..............M
#:.===-=::--:::==::::===,,--,,-= .HX$, -$+//. .$+:-,, -$+:-,- :X: X%;=,,,,,, ,@H$+;:= =$+=-,.,-=;+%$X;, ;:-..... . .,. .......... .@
#/,,=--==::--:;:=::::==--,,,-,-- =X$%/ /$+;;; =$/=-,, /$/=,,. %$, X+;-,..,, ,@H$+;==, /%/=,..,,-=:;+%%X$= =;=-...... .,. ........... @
#;=-,===-:;=-::::::::==-=-,,,-=, /$%+/. .H%;:=;: ; +$/--.. $%;=,.. H$ ,$+:,.... =@H$+;=-,, H$:,... ==:;/+%$X- -/=-....... ... ........... @
#;:=-::==:;;:=::;:::=====-,,,-=. $$+;;= X+;--=;;. ,H/ H%;-.. H+:,,. H% ;$/=,... :MH%+:-,,. ==--=:;+%$ ,/:,.. . ... . ............ @
#/====:=:=:;;:=:::;:======-,,,= H$/::; ,$+=,,,=/%;. -$M@, .X+:,.. ,$+=,.. ,$; %%/-.. :@X%+:-,... -. -=-,,--=;+= =%;,......... .. . .... ..... @
#/===:::=-:::;=:::;;========-,= ,H%/:=;- :X+=,.,-:+%$H+--. ...,=/$MM@HXXHH@MMMMMM@X+/:-,=/%X@MMMMMHX/=,,-:;%X@MMMM@X$- H%;=,. /MH$+=-,. . :- .;-,..,-=:. /%;-.............. .. ... ......@
#:===:=::--=:;::::;:=========-- :H$/:=:; %$+:,..--=/%$$X@@@MMM@M@@HXX$%+%$XHH@@@@X%+/;:=-/+%$HHXXXX%/=,.,=;/$XXHHHX$%. .H+:,. $MH$/:,... . %= ;=,....,, $%;-............... .............@
#:-=====::-:::::::;:=====-====, %X%;==:/- H%;=-, .---;++%%$$$$X$$X$$%++;;;/+%%$%%%++/:=:;::///+%/%+//;=,..,=;/++++%+/;. =X+=. .%MH$/:-.. . .@+ .--, ... ,H%:-.... ...... .. ....... ....@
#/-==::--;===:;::;;:====--====. @X%/:==;; .H%:--,...,.,:/;;////////;//:=;==:;;;;;:=::::-=:;:::=-;:=:====-,..---==::==== /$/. . H$ +X+=,... . ..... .......M
#/:=::::=:::==::::;:====-=-=== .H$+;:==:/ =X/=,--,,.....-/;-=::-====--;=-;=-===--,-,,-::-==:;=,..=-,,-----...,,,,,,,,,, X%= .- -H%- .@$/-,.... ... .. ..... .. ....M
#+::;:;;:=::::::;;;=========== =@$+;:==:;= /X;-,#####-#####;######-,#..#####:#-=####M.--M:--:##M. ##M##-#####.#,,,#...,. @%- -; ;X+/ H@%:,..... .. . ....... ....M
#+:::;;/;::;::;;;;:=======:==- /@%/:::==:/ $$;-,#,--#,#--, -#==M,#.-#, .---#/#,-#,,-,. M=#=-=;#-..#.-. M.,,#.#...# ... ,H+. +: H$/=: $M$/=,. .. . .......... .. ...M
#+:::::;;;;::;;;:;:==:====:==. $H+;:::::=;- M%:,.# ,=#,###,, #:=#,#.,#,-,###--#-,#####. .,-==,=#;-.#####.####--#####.... :X+ H- @%:-:: HMH+=,... ... .. ........., .....#
#+::=::;;/;:;;;;;;;=-====::::. MX+:====:=:; ,@+-. # .,#=#---,.#-:#=#,.#--M. =-.M=-,:-.M-. .,===-#:=,. ..M.M ..#.#...#.. . +$; .H .H+-,,;+, =#MH%;,. ........ .... .......,,. .. ..#
#/::::::;;;;;;;::::==-===:::: .@$+===:====;, =H/-..M. .#:#####,#.:#,#=,M-,####M,#=;####M--..,,==-M-=-M####,#,. M.#...# H$- -X =$;, .,;$%, =H#MH%:-. ...... .... ......,,,. ....#
#//;/////++++++/;;//+/++$X$$X$H@########M@X%++$%%++$$HM#########H/--, ,. ,;;=,-=-,.,;;==:-,--, ,==,.-:-=:,.==,=:::::=-==. .,.-..,, ,:=,. .,-:$@######M@%;;$@M####################MH++HM######MX;-,,,-;%HMX+=-......-=+H##M@X+;=.... ............ .,,,...,,......#
#/;;;;;///++////;;;;+;/+%XHXXXH@M##MM#MMMH$$+/%$%+++%X@MMMMMMMM@%;,--. .. ,:==,----.-;=:-=,,,-, ,=- .:--=-.,-=-=;::=-,-=-,,. ,. ,.. ,==.. .-:%HMMMMMM@X/=:+@MMMMMMMMMMMMMMMMMMMM@@$/+X@MMMMM@@$;..,.,-:/$HMM#M#######MMMMX%/:=,. .............. ..,,-, .--,.....#
#/;;;;:;;;;;;;;;;=:;=+;/$$X$XXHXXXHHXHHXXXX$%/;%$%++++$X$$$$%++/:-,-=-,,...,:;=--=-..-;=-=--,,. .-=,.,=-==,.,=--==:=--.-,.,, .,. ,,..-==-..,=:/+%+$%+%/=,=;+%+$%%%+$%%++%++%++//+/;::;++++++/;;-....,..-:/+%$XH@@@@@@XX$+/:,,-,. ..........,,..,-,-,..,--...,#
#;:;//:;;;;;;::::==:=;/;%%$HXXHX%+%%%$$%%$X$%+/+%%%+//+++/;;;;=,...,-=-,,,..,=;=--=-..====---,., .==,.,===,.,-=--====-,..,,,-....,.,. -;=-..=-----=:-=:-,,-====;:=::::=====:==-,,,,,,,,,--=-,,,,....,...,-===:;;//++/;;;-==,.--,. ...........,. .-,,,....,,..,#
#;:;+/;;;;::;::==:=::-//+%$XXX$X$/+++%$%+%X$+++/+$$+////+/:==:=. .,,=:-,-,,,-=:=----..-:==---,,. ,=-,,===-..,=---==-,-.....-=..,..., .-==-,---,.,,-=---=-,,-,.-===-==--------,. ...... .............,. .,....,--===---=-,-..,,,. ..... ......,. ,,,,,.,..,..,#
#/:;///;;;:::;:=-;==;-:;/$+%$X$XX%/+%+%%%%$$++++/%%//+//;+;:--==...,-=;;=-,,,,.-:=-,--..-==,,-,....,--,,-==..,,=-.-,.,,-..,..:=,,...,. .,-==-==-., .=-,,---,--..--==--,,,,---,,,. .,,.... .....,,..,,. ..,. ...,---,,=-,-,.,,,. ..... ......, .,,..,. ..,#
#/;;;//;;;;::;;:===-=;=;;%++%%X$$$++%++%++%%+++++++/////;;//:--;=...==;%+=-,.-,.-:;-,-,..---..,.....--,,---,,..,-. .,..,,,,-,,/=...,,.....=;==:=-....--,-=:===-,.-==--,,,,-=-,.,,. ..,. ........,,...,....,,.....,,--,,,=-,-,,,,.. ............, ,,...,. ..,#
#;:;://;;;;:=:;;=,;:-;:;//+/++%XX$%%%%++++/+%+++++/////+/;///;==:=,-:;;/+/:=---,.-:=,,,. .,=,.,,....,-,--,-=-.,.-, .,..--,-=.=;=,..,,... .=::===,,,..---=::-===.--==-,,,,-=-,.,,,... .. .,....,,,........,.. ....,-,-,--,--,,-,. .............. .,,. . ,.#
#;:;;//;///::;;;=-;/==::/;//++/$$$$$%$//++//+%++++++///+//+/;/:-:::=:+/+%+/;=,,=,..--. .. .--.,,,....,-,,--==,-,,-- -.,,---:=,=;-. .-,,.. .===:=--,,.,-,-==-==-=,-====-,.,--,..,,,.... .. .,,....,,,...............,,,,-.,-,,,,,,.. ...,........,. .,, ..#
#::;;+/;;++/::://::/:=::::;/;/+/$$$$%%/;/%+//+++/++%+///++++///;::;::+%%%+%+:-..-, .-. . .,. .,...,=..-..=-.-,,=- ..-.-=,=;=-=;= ,--,,. ,=::;---,,..-,,=--==--=--==--..,,,,,,.,,.. .. ,,.....--.,..............,,,,,-,,-,,,,,.. ............,,. .-... .#
#;::;/++/;++;=;;//:;/;::::;;;/+/+$X$%++//+++++++//+%+///+%++////;////+$%%%++/:=,,,. .. . .. . .....,,-,..,-..,,.-, ...,---=/==::=. ,--,,..,==::=---,..=--:--==----====-..-.-,,..,,,. .. .,,....,--................,,,,,,---,,,... ....,..... .,.. .. . #
#/;;;;+%/:/++:::;/;;/;:=:=:://+%/%$$+++++/+++++//+++%+///+++///+//+%+%%+%%//+/;-.,,. .. .. ..,...-....--.,,,,,.....----;/:::=-..,,,--..,==;===-.,.,=--=-==--==-====..,,,,,,..,.. ... ,.....,-..................,,,,,,,,,,..... .....,.... . ... .. .. #
#/;////%+///+/;;;/;;//;;::==:;;$//%%+%+%+/+++++//+%++%+++++////+++%$%%%%%%+//+/:,,,,. . ... ....,...,.,, ,=-,,-,,-..,.,-=-=/+;:::=..-,-==,.--======-..,--=--=-,-======-..,,,,,,,... .,... .......,.......,..........,,,,,,,,,,,.... .....,...... ........... #
#;:/+;;+%++/////;;//++/;:;===;=///+%+%%%+++/+%%++%%++%%%+++////+%%%%%%+%%%%+///;=,.,,. .... .... ..,,.,,,. .=-.,--,--,-,-=-=:;/;::;=.----==,,,,===::--. ,--=---,-====-=:..,---,,,,--... ....,............,,... .,....,,..,,,,,,...........,. .......,,...... #
#;;//;/+%%++///+/;/++++;;::=:;;://;+++$%+++/+$%++++++%$$%++/////+%$%%%+/%$%%+/+//=.,,,.. .,..,. .....,..-,,-. --..,-.,-,--,---=:;/:=:;--=,,-==,---==:::-,,.----,--,---=-=:=.,,-,-,,,,--.... .......,,.......,,...........,,.,,,,,............,,..........,. .,.#
#:;////+%+/++//+/:/+/+++/:;:;:////;+%%$%%++%$$+//+++%%$$$%++////+$$%$$%/+%%$%//+/;=,,---.,-----....,,.,.,,,-=,..-=..,..,,-----=-=:;::=::==-,,-=--,.-==:;---..---,,,,---==-=;=-,,,--,,.,=-..,. .......,,........,...........,,,,,............. .,,..........,. .,,#
#:;////+++///+///;;+//++/;;/;::/;:/+%%%%$$$XX$%+/+++%%%%%$+++/+/+$$$$%$%++%%%+/+//;=---=-,-:====,,.,-,-,,.,--,...=-.,,..,,----=--=:;;==:===-,,,-,,,---===--. ,-=,...,---=--::=-,,,-,-,,--..,..........,,.. ....,,.,...,,.......,,............ ..,...,,. .. .,...,#
#::;/;;//+++++/;+/;////+/;;;/;::;::;++%%$$$XX$$%++/+%$$+%$++++//%$$$$$$%++++%$+%++/:=--::=:;:=::--,,-,---..---.,.,--,,....,--,==---=::====:=---,---.,--==-== ,,=-,,..-=-==--=:=-,,=-,-,---,.,,........,... ....,.......,......,,........,,.. ..,. .,,... .,,,..#
#;::;;;;//++++///////++//;;;;;;:==--://+$$X$X++$++++%$$$%%++%++++%X$$X$$%++%%%%%++/;;:=::::;/:=;=----=--,,.,-=-.,,,.,-, ,,,,,--==-===---=:====-.,--,,-----==.----=,.--=-,=--===-,---------,,,,,.. ....,,........,,.... .,,...............,,. ......,.... .,,..#
##################################################################################################################################################################################################################################################################