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