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