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