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