!!!!!!!!!!!!!!!!!!!!!!!!!!;;!;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;!)**&##@@@@@#####$&%==>>>&$@@##=>>>>=%=+!;;;;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;*)!=###@@@@##@###$&&%?>+%==#@@$?>?>==&%=*;!!;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!;;;;;;:-;;;;;;;;;;;;;;;;;;;;;;;;;!)*>$##@#@@@@@@####$$%=?=?>?#@@$?>?==&&&&+!;;;;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!;!;;;;;;;~~:;;;;;;;;;;;;;;;;;;;;;;;;!++&$#@#@@@@@##@####$$%%=?>+$@@$=>?%%&$&$=*;;;;;;;;!!!!;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!;;;;;;;;;:~^~::;;;;;;;;;;;;;;;;;;;;;;;;*>?&#@#@@#@@@#@@##@#$$$$%%>;-=$%?>=%&&$$$&);;;;;;;;;;!!!;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!;;;;;;;;;----:::;;;;;;;;;;;;;;;;;;;;;;;!+>%&@#@@@@@@@@@@#@#####$$&+^.;>?=?%&$$$$$$>!;;;;;;;;;;;;;;;;!!!;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!;;!;;;;;-------:;;;;;;;;;;;;;;;;;;;;;;;!>?%#@#@@@@@@@@@@@#######$&!,'^*+>$&&$#$$$$?*;;;;;;;;;;;;;;;!!;;!;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!;!;;;;;;;;;--~::;;;;;;;;;;;;;;;;;;;;;;;;;;!?=&@#@#@@@@@@@@@@########=-.'.;)>&#$$$#$#$%*;;;;;;;;;;;;;;;;;;;;;!!!!!!;!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!;;;;;;;;;;;;;~-:;;;;;;;;;;;;;;;;;;;;;;;;;;;;*=%###@##@@@@@@@@########$+,'''^*+=##$$###$$);;;;;;;;;;;;;;;;;;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!;;;;;;;;;;;;;,~:;;;;;;;;;;;;;;;;;;;;;;;;;;;;)=&##@#@@@@@@@@@#########&:,''''~*>&###$##$$>;;;;;;;;;;;;;;;;;;;;;;!;;;!;!!;!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!;;!;;;;;;;;;;;;;:^~:;;;;;;;;;;;;;;;;;;;;;;;;;;;+=$$###@@@@@@@@####$$$###>^,.'``'~)=#######$>;;;;;;;;;;;;;;;;;;;;;;;;;;!!!;;;!!!;!!!!!!!!!!!!!!!!!!!!
!!!!!!!!;;!!;!;!!;;;;;;;;;;;;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;?%&#@#@@@@@@@@####&=&&##&:^,,^~---;+&######$?;;;;;;;;;;;;;;;;;;;;;;;;;;;!;;;;!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!;;;;;;;;;;;;;;;;;;;;;--:;;;;;;;;;;;;;;;;;;;;;;;;;!?%$@##@@@#@@#####$&%&$$$>:*+>>):~^^!?$#>;%#$?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!;!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!;;;;;;;;;;;;;;;;;;;;;;;:-:;;;;;;;;;;;;;;;;;;;;;;;;;)=%$@#@@@@@@@#####&%%&$&=:!)+?%%=+;~-+%+~!)#$=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;:-;;;;;;;;;;;;;;;;;;;;;;;;;;+=%##@@@@@@@@@@#@#@#&&$=!~-*=$#&%%#)~!>:.^*#$?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!;!!;!!!!!!!!!!!!!!!!!
!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;-^-;;;;;;;;;;;;;;;;;;;;;;;;;>=&##@@@#@@@###&&$$&$&&>^^^;=?%%)))^,:+)!,)#$?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!!;!;!;;!!!!!!!!!!!!!!
!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;~^~;;;;;;;;;;;;;;;;;;;;;;;;?=&#@@@@@@@@#$&&=?>?=%%*,,.,:!**:-,,,-*)>-+$$>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!;;!!!;!!!!!!!!!!!
;;;;;;;;;;;;;;;;;;;;)?+*!;;;;;;;-^;;;;;;;;;;;;;;;;;;;;;;;;?=$##@@@@@@@$&=>+)))+?=*,..,^~~^...,,-:-)~?$$>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!;!!!!!!!!!!!!
;;;;;;;;;;;;;;;;;;;+?%>+++)*!;;;;^;;;::;;;;;;;;;;;;;;;;;;;?%$##@@@@@@@$%=>))**)>?),...,,,,..,,,---~-$$$+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!;;;!!!!!!!!!!
;;;;;;;;;;;;;;;;;;;!%&%=>>++++*!;~;;:;~;;;;;;;;;;;;;;;;;;;>%&#@@@@@@@@$%=>+)*))>=+,..'.,,,.,^^^~^,~%$$$);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!;;;;!!!!!!!!!
;;;;;;;;;;;;;;;;;;;;;)?&&%=?>>+++*!;**-;;;;;;;;;;;;;;;;;;;+?%#@@@@@@@@$%=?>+))+?=+,,.,,,,,,^^^~^~-=#&$&*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!;;!!!!!!!
;;;;;;;;;;;;;;;;;;;;;;;;*>%&%%=?+++++)*;:;;;;;;;;;;;;;;;;;)>=$@#@@#@@##%=?>+++>==+,,,,^^^^^^^^)%>=&$%&%*:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!!!;
;;;;;;;;;;;;;;;;;;;;;;;;;;;!+?&&%==>++*:-+!;;:;;;;;;;;;;;:!+=$#@@#@#@@@%=?>>+>?=?+;:^,,,^^^^^^&@%&&&?&=*:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!;;;;;!!;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*>%$&?)*;!+>?)!;;;:::;;;;;:;*=$#@@@#@@@@&=??>>>?==?!:,.,,,^^^^;@$=&&%???!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::!>+++?%>>=)++);::::::::::!=####@##@@@#%=?>>>??>:-''.,,^^^^~=@&=&&=??>*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!>>+++?&&&%?>>+!::::::::::*&####@#@#@@@&=??>>>?=?+*-^^^^^^~*@@&%%&%?=>):;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;&&>+%*::*+=&&%?;:::::::::;?$#&##@#@#@@@@%??>>=&&%%?>);~^^~;#@@$=%$&=?>);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;?@@##=!:::;;:*+!:::::::::;+%%?$$@@###@@@@#=?>>?==>>*!-^~~~-=@@#%)%&$%=++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:%$%%#&=!::!+:::::::::::::;!=>?&$@@@###@@@@@$=?>>>>>>);~~~~-~%@@#%==&#&=>+!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;:;;;;:)&$:^*&%!::?+::::::::::::;!+=%%&#@@@###@@@@@#&=?>>)!:~~~~~-~~&@@##&=%@$&?+);:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;:::;+&##):~:=;:;%)::::::::::::;*???=$@@@@##@@@@@@#&%=?>);-~^^~-^^^&@@@#$==##&%>+!;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;::::>=#@###=*-~-:?%)-:::::::::::;*+)!>@@@@##@@@@@@@@&%%=?>*;----^,,^%@@@#$=?$#$&=+)!::::;:;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;::-%%&&&;*%&>;~*@#&%;:::::::::::::!;%@##$$#@@@@@@@@&%%%=?>)!:~^,,,^>@@@##&==##$$=));:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;::;!?####%!:~;>>!-#$&%::::::::::::::;+&#$&$##@@@@@@@#&&%%=?+!:~^^,,,,;@@@@##%=%@#$$=));::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;::)%######%>):~+====%>::::::::::::::;>&&%###@@@@@@@@#&&%==?);-~^^,,,,^&@@@##$&%&#$#$=)*;:::::;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;::)&##@@#$%??>)*?=>+?)::::::::::::::*$#$&@@@@@@@@@@@$&%=?>+*;-~^^,,,,,;@@@@###$$$$$#$?)!::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;:*&$##$&&=>>>>>>)))>+:::::::::::::)&&##@@@@@@@@@@@#$&%=+))!:-~^^,,..,^=#@@@#@@##$$$#&>+;;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;:;;:;:::::*&$$&=+>?>>>))*;;)?;:::::::::;!)??=#@@@@@@@@@@@@@#$&%?)!!!:-~~^,...,!;:%@@@@@@@##&$&=>))!::::::::;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;::::::::::%$$&=>*+>>?!!;:*>>::::::;;::!*!*?##@@@@@@@@@@@#$#$%=?);:::--~^,..,!;^^^!&@@@@@@#%&&?+>);:::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;:;;::::::::::::+$&&%?*!+>?*;;!+=!:::::::;*)))>=$$#@@@@@@@###$&%%$&??):~-----~,,^*-^^^^^~)&&%&&?****!)!;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;::::::::::::;&&&&=>!!+>>;!)?+::::::::::;*)*;!+%&$###%%%%%==??>%%>):^~--::~,-)-~~~^~~-*=>%==?:-~~^^~-::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;::::::::::::::=$&&%?+!)>=)*>=!:::::::::-^^~-:;;!>%&&&!)++>++))))?%):^,~:!;~!)---~~---:;)-==?=)~~^^,,,^-:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;:::::::::::::)$&$&=?+)>>=??>:::::::::^,-;;;;;;*%%&&)!***********)=:^,~;)!+*--------~~~:-;&???~^^,,...,-::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;
:;;;;;;;;;::::::::::::::::;&$&&%=?>?=%%%!:::::::-,~!!!;;;;;=&&&>;)***!!!;;;;;-!)^^-!)>):~^^^^^^^^^->~.%=??!^,,......~:::::::::::::::::;:;;;::::::;;;;;;;;;;;;;;;
;;:;;;;:;::::::::::::::::::+$&$&%====%&%;:::::::,-*)*!;;;;?&&&%:!****!!!!;;;:-->,^:*)?;-~^^^^^,,,~!%,`!&>?>,,...''...~::::::::::::::::::;;;:::::;:;;;;;;;;;;;;;;
;;::;;::;::::::::::::::::::)#$#$&%===%=?:::::::^~*)**!!!!+&&&&)-*!!*!!!!!!;;:::)*-:*?;-~~^^^^^,^^~*&'`^$???^.......'..-:::::::::::::::::::::::::::;:;;;;;;;;;;;;
;;:;:;;:::::::::::::::::::-&###$&&%%&&$&!:::::-,!))**!!*)%&&&=::!;!!!!!!!;;::--!>+*>:--~~^^^^^^^^-+&``'==>?:..........,::::::::::::::::;:::::::::;::;;;;;;;;;;;;
:::;;:::::::::::::::::::::)%####$$&%=%%=):::::,;)+)****)=&$$&*::!:;!!!!;;;:::---!?):---~~^^^^^^^~-+%```;$>>!'..,,,.....^:::::::::::::::::::::::::::::;;;;;;;;;;;
::;::;::::::::::::::::::::+&$&&&%%=???==*::::-~)+))***)?%$$$=!::;:;;;;;;;;::----->+:---~~~^^^^^~~-)?```,&?>+'..,,,,,....-::::::::::::::::::::::::::::;;;;;;;;;;;
::::::::::::::::::::::::::>&$&&&&%=????=*::::^!++)))))>%&$$&+;-:::;;;;;;;::---~~;#&----~~~~~~~~~--!*'```>%>>..,,,,,,,...^::::::::::::::::::::::::::::;;;::;;;;;:
::::::::::::::::::::::::::>&&&&&%%=????=*:::--+>+)))++=&&$$%);::-:;;;;:::----~~~*$?::-------------:~'```-$>>~.,^^^^^^,,..-::::::::::::::::::::::::::::;;;;:;;;;:
::::::::::::::::::::::::::>&&&&&%%=????=*:::~!>>+))++?%&$$&=);:---;;:::----~~~~^~!;;;::;;;::---~~~~'````'%=>-.^~---~~^,,.^::::::::::::::::::::::::::::;:::;;;;;;
::::::::::::::::::::::::::>&&&&&%==???==):::-)>>++++>=&$$&&>*;--:~:::----~~~^^^^^~;!!!!*!;;:--~~^,''`````)=**~-!!!;:-~^,,.::::::::::::::::::::::::::::::;;;;;;;;
::::::::::::::::::::::::::>&$&&&%%=???=%*:::-+>>+++>?&$&=%%+!:-~-^^:--~~~~^^^^,,^~;*)))*!;:--~~^,'''`````~&;;!>?>)!;:-~^,.~::::::::::::::::::::::::::::;::::;:::
::::::::::::::::::::::::::!?&&&&%=????=>:::::+>>++>>=&%*+$+!:-~^^~,^-~~~^^^^,,,,^-*+>+)*!;:-~~^.''''`````'=&))=?+)!;:-~^,..-::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::+$#$$$&&$?:::::;+>>++>?=$==$=*;--~^,,^,.^~^^^,,,,,,^:+>>+)*!;--^.'..'''``````:$??%=>*!;:-~^,,.,-:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::)$####&=$%-::::;+>>>>>?%$##%)!:-~^,,..,,..,^,,,,,,,~*>>>+*!;:~,..,..''```````'%%=%=?)!;:-~^,...,-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$#@##%?&$-:::-;)>>>>?=&$#$+*!:-~^,,..''..''.,,,,,^:>?>>);-^,,,^,,..'''```````;&?%==>*;:-~^,....,-:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$###$%?&#;-:::-*>>>?=%$#$?)*!:-~^,...''''...''..,^:+*;~,,,^^^^,,,..''````````'$==%=?+*;:~^,.''...-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$####&?%#*:::-~)???=%&$#&))*!;-~^,...'''''''.,.....,,,^^^^^^^^,,,..''`````````>=%%==?+!;-~^,''...,);::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$####&?=#>-::~:>??=%&$$$=))*!;-~^,,...'''''''''..,,,,^,,^^^^^^^,,..'''````````;%%%%==>)!;-~^,.''..)%!:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*&####&?=$%---^)??=%&&$$#>))*!;-~^,,.....'''.''.....,,,^^^^^^^^^,,,.'''````````~&=?====>)!;-~^,.'.,?%%!::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$####$=?$#--~:>==%%&$$$#+)))*;:~~^,,.............,,,,,^^^^^^^^^,,,..''````````^&==?>===>)!;:-^,..!>=%%;:::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$####$=?&@;-^)?=%%&&&$$#+)))*!:-~^^,,............,.,,^,^^^^^^^^,,,,.'''```````~%%==!?===>)*;:-~^)>>?=%=;::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*$####$%>&#+^!?=%%%&&&$$#+))**!;-~^^^,,,,,.........,,,,,^^,^^^^^^,,,..''```````;%&%?!+?===>+*;:*%%????=%=:;+:::::::::::::::::::::::
:::::::::::::::::::::::::::::*$####$%>%#=*$@@@#$&&&&$#>))**!;:-~~^^^^,,,,,,,,,,,^^^~~~~~~~~~^^^^,,.'''``````+%&%+**=*?==?>?&$$&&%=??%&==$%;:::::::::::::::::::::
::::::::::::::::::::::::::::-)$####$&>%#$+#@@@@@@@$&$#=))***!:--~~^^^^^^^^^^^~~~---:-::-----~~^^^,,.'''`````%$&%+*!=*;=&$#####$&&%==?%&&##&!::::::::::::::::::::
:::::::::::::::::::::::::::--)$####$&>=#@$@@@@@@@@@@$$&))***!;::-~~~~^~^^^^~^~~~~~~~~~-----~-~~~^,,..'''```~%#&%?)!=*-:=$#@@##$$$&%=??%&$@@#*:::::::::::::::::::
::::::::::::::::::::::-:----:)$#####&??$@@@@@@@@@@@@@##+)***!!;::--~~~~~~~^~^~~~~~-------------~~^,,...'''`?%#&$%+)=;-::>$#@###$$$&%==??$#@@$;::::::::::::::::::
:::::::::::::::::::::::::---:+$#####$=>&#@@@@@@@@@@@@@#=)****!!;::---------:::::;;;::::::::::---~~^,,...''-&$#&#&??>:::::>$#@###$$$&&?))=#@@@&::::::::::::::::::
:::::::::::::::::::::-------:+$#####$=>%#@@@@@@@@@@@@@@#+****!!!;;::::::::::::::;;;;;;;;;;;;:::--~~^,,,..^?%##&#$=>!:::---+$##@###$$&=+)+$@@@@):::::::::::::::::
:::::::::::::::::::::-------->$#####$%>=$@@@@@@@@@@@@@##$+*****!!;;;;::::::;;;;;;!!!!!!!!!!!;;;::-~~^^,,^!?&@$&#$%+::::----+$#@@@###$&%===@@@@%:::::::::::::::::
::::::::::::::::--:---------->$#####$&??$#@@@@@@@@@@@%$##%+)****!!!!;;;;;;;!!!!!!!!!!!!!!!!!!;;;::-~~~~~):%$#$%$&%>:-:------+$#@@@@#$$$$=%&@@@#;::::::::::::::::
::::::::::::::--:------------?$#####$&=?&#@@@@@@@@@@&=$##$%>))*****!!!!!!!!;!;;;!!!!!!!!!!!!!!!;;;;:::;?;>=@#$%$%>>;---------+$@@@@@@##$%=&#@@@*::::::::::::::::
::::::::::::::---------------?$######$%?&#@@@@@@@@@@*=#@##%%?>+))*****!!!!;;;::::::;;:;;;;;;!!!!!;;;::)>^&&#$&%$=!>:----------?#@@@@@##&>+=#@@@)::::::::::::::::
::::::::::::-----------------?$######$%=%$#@@@@@@@@=;=####===?>++)))**!!;::-----------------::::--~^^->:+=##$&&&>;>:----------)$@@@@@#$$?)+$@@@+::::::::::::::::
::::::::---------------------?$######$&=%$#@@@@@@@@;;%$###&?%=>+++))*!;;:--~~~~~~~~~^^^^^^^^^^,^,,,^->)~&%@#$&$?+**------------!$@@#$$=++=%$@@#)::::::::::::::::
:::::::::--------------------?$######$$%%$#@@@@@@@?-;%$####>==?>++))*!;:--~~~~^^^^^^^^,,,,.....'''',:>~>=$###$%>)):-----------^+#@@#$%>*;!=$#@#!::::::::::::::::
::::::::--------------------->&$######$&%$##@@@@@@;-;%&#$##??=?>>++)*!;:--~~^~^^^^^^,,,,....''''''',*)~%=#####?>*;-----------^;$@@#$&?)!!)=$#@#:::::::::::::::::
::::::::---------------------+&$######$&&$##@@@@@?:-:%&$$##%>=?>>++)*!;:-~~~^~^^^^^,,,,,...'''''''.->-?=&@@##$%);-----------~-%@@#$&=+!;*?&&##?:::::::::::::::::
::::::-::--------------------)&$######$$&$###@@@@;:-:==&&##$>?=?>++)*!;:--~~~^^~^^^^^,,....''''``'.!+:%=#@###$&*------------^>#@@#$%>*;!>%&&$$;:::::::::::::::::
:-----:----------------------*%$#####$$$$$####@@?-:-:>>&%###>?=?>++)*!;:--~~~^^~^^^^^,,....'''```'^+;==&#@##&&$):----------~;&@@#$&?*!!+%&&%$*::::::::::::::::::
-----------------------------;%$$####$$$$$####@#:-:::*?=?$#$%>=?>++)*!;:--~~~^^^^~^^^^,....''''`'.:>*%=$###$%&%?;----------~?#@#$&=)!!)=&&%&*:::::--::::::::::::
------------------------------=&$$####$$$$#####?--;;::>+=%#$$>??>++)**;:--~~~^^^^^^^^^,,...'''''',*)%=%###$=%?>%!---------~!$@##&%+*!*?&&%):---------:::::::::::
------------------------------=&$$$#$#$$$######;-:*;!-!))%###???>>+))*;::-~~~^^^^^~^^^,,...''''`'~>?%=%#$$$?%**=)---------~=#@#$%>*!*?%&&+------------::::::::::
------------------------------?%$$$####$###$$#?--:);;;-;!)#$$%>?>++)**!::--~~^^^^^^^^^,...''''''.:%&==%$#$?%):!=+--------~*$@#$&?)!*>%&&>-----------------::-:::
------------------------------*%&$$$#######$#$:--:>!-!;--!$#$&??>++))*!;:-~~~~^^^^^^^^,,..'''''.->&%==$#$%=>;-*?)--------~=@##$%+!!+%&&?:----------------:::-:::
------------------------------:=&$$##########)---:>+--*!)&$$$#==?>+)**;:--~~~^^^^^^^^,,...'''''.:>%==&$#%%?;--+=!-------~)$@#$%>*!)%&&=:-----------------:::::::
-------------------------------+&$$$$#####@#=-----*%*:;>$##$$$=>>+)*!!;:--~~~^^^^^^,,,,..'''''',*>&==##%=?;--:=>:--------&@##&?*!)=&&=;-------------------::::::
-------------------------------;%$$$$###@@@&:------+%?=&&=$$$$%+>+))*!!:--~~^^^^^^^,,^,.'''```',+%?>?$%??:--->=*-------~>###$=*!*?%&=;--------------------::::--
--------------------------------+&$$$###@@$;-------:)==>+?$$&==+>>+))*!;:-~~~^^^^^^^,^,.....,,^!=>++-+>?!---+?)-------~*###$%+!*?%&=;-----------------------:---
--------------------------------:=$$$$###$;--------::;+?%##&>>++>>+)**!;:--~~^^^^^^,,,,.''```',!=~;;,~>*--:+>)------:::%##$&>!!>%&=;-------------------------:--
---------------------------------:=$$$##&;---------::;*?$$$>+>))+++)*!!;:--~~^^^^^^^,,,..''''.^>;,:*..-:-;++!-----:>&$&&&$&?*!+%&%;-----------------------------
-----------------------------------;)++*----------:;+?=%%%?)+>)++))**!!;::--~~^^^^,,,....''..^)+,,:>...-))!:------?&&&&&%==+!)=%%;------------------------:--::-
--------------------------------------------------:!*)+>>>*)>>))>+))*!;;::-~~~^^^^,,,..''''''~?^'.~?,.~)&;------->&&&&%%==?+)?%%;-------------------------------
----------------------------------------------------:;!;-*++?>++>++)*!;;::-~~~^^^^,,,...''''.>+''.-?)=%&&*------>&&&&%%=?+*)+?%!--------------------------------
---------------------------------------------------------?&&%=>>>?=+)*!;;:--~~~^~^^^^^,...^-;>++?%%=!%&&&>----->&$&&%%=?>*;:)?*---------------------------------
--------------------------------------------------------!=$&%@###%%$&=?+)!;::--~~~-:;*)>=%&=>)*+>>=+*>+&&%!)*!=###$&%%?>*;:!*?>---------------------------------
-------------------------------------------------------->%$%=$##$=?########$$%=?=&$$$$&%%=%=>**+++>=!-^+&&$%=&%%$@@@$%?)!:;)>?=;--------------------------------
--------------------------------------------------------?$##&####&$##########$$&$##$$$&&%==&>>>?=&=!~^^>$$$&=?%%>=$@@#%+;;*+??=*--------------------------------
--------------------------------------------------------)&##@@@##############$?+)%&=?$$&&%%%==&&&=;~^:=@@##$&??%+>?%##@%>)+>???*--------------------------------
------------------------------------------------------:;+=##@@@@@@@@@@########>))=$##$&&&&&&%=>==*:-)&#$&$>&%&?>%+>?=$#@%?>??>>:--------------------------------
--------------------------------------------------)=&?)+?&###@@@###@##@@@####$&=%#####$$&%==??=$+!)=&=)=%%&&&%?>>=>>?=$##=??>)----------------------------------
----------------------------------------------+=?+?&%=%%%$###@@@@@@#########@$$######$$&&%===?=$=>?$>-~-%$$###$=>>=>>=%#@&=?)-----------------------------------
----------------------------------------------?$$#&?>?%$##$$#@@@@#@#########@$##@$###$$$&%=======%%*-^^*#@@@#&&&=??=%==$@#=)------------------------------------
----------------------------------------------?$#@$&&&$=%$@##$$$##@@@#@######$###$###$$$&&%=%%%%%?!-~-+%&##$??&%%=?????$@$*-------------------------------------
---------------------------------------------:*$##$$&##%&#@######$&&$$$$$$$&>????>>>>)>$$$&%%?==?!;-!??=%*-?&$$$&$?>>>?#$*--------------------------------------
---------------------------------------------!%$##>%&@#%&#$$$$$&&&&&&&&%%%&&=&&&&%%%%+%%%=????=&);;)===+-^^)$#@@#&%>>>**----------------------------------------
----------------------------------------------+&##+&&@#=&#$$$$$&&&&&%%%%%%&&?$&&%===?+?????=???%)*>?=?!-~~*$@@@@$%$>>;------------------------------------------
----------------------------------------------+&##$&$@#=&#$$$&&&&&&&%%%%%%$&=$&&%%==%>======??=%???=>;;:*>>>=##+~+&>;-------------------------------------------
----------------------------------------------?&###&$#$=&#$$$$$$$&&&&&&&&&$&=$&&%===?+===??=???%???&=*+>>>>?=$)~,);---------------------------------------------
-------------------------------------------~~~=&##$&&#$%&@@@###############$>????>>>+)>&%%=====%???=??>>>>>??*;~)>~---------------------------------------------
-----------------------------------~----~~~~~~!&##$%&#$%&@@################@@@@@@@@##########$&$&%=?????>>?&*;*>==:---------------------------------------------
---------------------------------~-~~---~~~~~~~%$#&&&#&%&@@###############@@@###@########$$$$$$$#####$&%%%%$%=%%&&)~--------------------------------------------
-------------------------------~~--~-~-~~--~~~~:=$$$##&%&@@@#@#########################$$$$$$$$$$&&%%===%%%===%%&&=-~-~-----------------------------------------
-------------------------------~---~~~~~~~~~~-~;=#####$$#@@@@@####@#################$$$$$$$$&&&&&%%&&%%%%&$&=??%&&&+~~~-~~-~------------------------------------
--------------------------------~~~~~~~~~~~~~~:;)&#@@@@@@@@@#####################$$$$$$$$&&&&&&&&&&%&&#$&?+)++?=%&&?~~~~~-~~-~----------------------------------
-----------------------------~-~~~~~~~~~~~~~~~*%$###@@@@@@@@@@@@@@@##############$$$$$$$$$$$$$$$$###$&=??==?>>?=&&&&!~~~~~~~------------------------------------
------------------------~----~~~~~~~~~~~~~~~~-+%$##@@@@@@@@@@@@@@@@@@@@@@#########################$$$$$&&%%%=%%&&$&%)~~~~~~~~~~---------------------------------
--------------------~--------~~~~~~~~~~~~~~~~!?&$$##@@@@@@@@@@##################################$$$$$&&&$$$$&%%%?=&&%~~~~~~~~~-~--------------------------------
--------------------------~~~~~~~~~~~~~~~~~~~*>%&&$#@@@@@@@@@@@@@@@@@@@#########################@@@@##$&&%%%=?>>%&&&=~~~~~~~~~~~~-------------------------------
--------------------------~~~~~~~~~~~~~~~~~~~+=&$####@@#########################@@#######@@@@#######$$$&&=??=%%&&&&&%-~~~~~~~~~~~~~--~--------------------------
-----------------------~--~~~~~~~~~~~~~~~~~~->%$$###@@@##########################@@@@#@###########$$$$$&&&&%=?>+?%&&%;~~~~~~~~~~~~~~----------------------------
----------------------~---~~~~~~~~~~~~~~~~~~:>%$$###@@@#################################$$$$###$######$&%?+)***)?%&&%!~~~~~~~~~~~~~-----------------------------
----------------------~-~-~~~~~~~~~~~~~~~~~~;?%$$###@@#########@@@@@###############################$$$&%=>+)**)+=%&&%*~~~~~~~~~~~~-~----------------------------
---------------------~~-~-~~~~~~~~~~~~~~~~~~!?%$$###@####$$$$####@@@@@@@@@@@@@@@@@##################$$&%=>+))*)>=&&&&)~~~~~~~~~~~---~---------------------------
---------------------~~~~~~~~~~~~~~~~~~~~~~~*=%$$#########$$$$$$#########@@@@@######################$$&%=?>+++>?%&&&&>~~~~~~~~~~~~-~----------------------------
--------------------~-~~~~~~~~~~~~~~~~~~~~~~)=%$$#########$$$$$$$$$$$##########$####################$$&%=?>+++>?%&&&%+~~~~~~~~~~~~-~~---------------------------
-------------------~~~~~~~~~~~~~~~~~~~~~~~~~;=%&$##########$$$$$$$$#$$$$##########################$$$$&%=?>+)+>?%&&&&!~~~~~~~~~~~~~~~---------------------------
------------------~-~~--~~~~~~~~~~~~~~~~~~~~!>=&$###########$$$$$$$$#################$##$$####$$$$$$$&&%=?>+))+>=&&&%;~~~~~~~~~~~~~~~~--------------------------
----------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~!?%&$#########$#$$$$$$$#$##$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&%=???>>?=%&&&%:~~~~~~~~~~~~~~~~~-------------------------
-----------------~~~~~-~~~~~~~~~~~~~~~~~~~~~:*&@$?>>>??=%&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&%=?>+))+>?=%=>)-~~~~~~~~~~~~~~~~~~~~~---------------------
~--------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-;$@=)*!;:::::;*+?=%&&&&&&&&&&$$$$$$$$$$$$$$$$$$$&&&&%==?>+)!!;;%$$!,....~~~~~~~~~~~~~~~~~~~~~~---------------------