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