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