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