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