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