++++;+++*?*%SS%S*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::;?+::++;S?:::::::::::::::::::;
++;??%%%%S%?SSSSS%%;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::*?+:;;;;:S?:::::::::::::::::::;
++**%%%%%SS%%SSS%%S?*?+;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::+*;*+++*++:%?::::::::::::::::::::
++%%%%%?%%SS?%S####%SS*;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;*+::??***+;:%%::::::::::::::::::::
???SSSS%%#SS%??%??*+++;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::*;;;+??*?*+;:?%::::::::::::::::::::
+%%%???*;+++;;;;;;;;;;;;;;+**+++;;;;;;;;;;;;;;:::::::::*;+*??????*+;?%::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;+*??*******+;;;;;;;;;:::::::::*:+??%?**%?*+?%::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;***********??*+;;;;;:::::;+***?+??*?*+*?**+*%::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;:*************?%?*;;;:::+%#@@@@@@@#S%?***+*++%::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;:***********????????*;;%@@@@@@@@@@@@@#S?*+*;+S::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;:+********?????%%SS#SS#@@@@@@@@##SSSSS#@S*+:;S;,::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;::+********;;;;;;+*%S#@@@@@@@#%%?*****?%#@S;,;S;,::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;********+:;;;;;;:;*#@#@@@S%???%%?*****%@@+,;S+,::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;:+?********;;;;;;;;;S@S#@#S?*?%%??%%***?S@@%::S+,::::::::::::::::::
;:;;;;;;;;;;;;;;;;;;;;;:+?********;;;;;;;;?@@##S%?**?%S%???*?%S@@@#::S*,::::::::::::::::::
;:;;;;;;;;;;;;;;;;;;;;;:+%?*******;;;;;;;+#@@#%**??****????%SS#@@@@+:%*,::::::::::::::::::
;:;;;;;;;;;;;;;;;;;;;;;:+%?*******;;;;;;;*@@@#%**??****?%?*?%#@@@@@?:%?,::::::::::::::::::
;::;;;;;;;;;;;;;;;;;;;;;:*??*****?+;;;;;;%@@@@#?*****???????%@@@@@@S:??,::::::::::::::::::
;:::;;;;;;;;;;;;;;;;;;;;:*S?*****?%+;;;;?#@@@@@S??**?%%%%%?%@@@@@@@#+%?:::::::::::::::::::
;:::;;;;;;;;;;;;;;;;;;;;;;+******?%%*+*%#@@@@@@#S%??*???%%S@@@@@@@@@S+;:::::::::::::::::::
;::;;;;;;;;;;;;;;;;;;;;;;:;+*****??%SS@@@@@@#@@S%%%%???%S@@@@@@@@@@@S:,:::::::::::::::::::
;::;;;;;;;;;;;;;;;;;;;;;;;:;+***????%%SS#####@S%%%%S#@@@@@@@@@@@@@@@@+::::::::::::::::::::
;::;;;;;;;;;;;;;;;;;;;;;;;::+**????????%%SS##S%S%%SS@@@@@@@@@@@@@@@@@?::::::::::::::::::::
+::;;;;;;;;;;;;;;;;;;;;;;;;:;+++*???????%%SS%%SS%%%%S#@@@@@@@@@@@@@@@S;:::::::::::::::::::
+::;;;;;;;;;;;;;;;;;;;;;;;;;:::;**??????????????????%SS#@@@@@@@@@@@@@#+:::::::::::::::::::
+:;;;;;;;;;;;;;;;;;;;;;;;;;;:,:;+*?????***********????%%%S@@@@@@@@@@@#*;;;+;::::::;*??::::
+;;;;;;;;+++++++++++;;++++++;,:+***?????*********?????????%S@@@@@@@@@#??%%S#%++;;+?%%*::;;
+;;;;;++++++++++++++++++++++;:+++**?????******??????????????%#@@@@@@@S*+***?##S*++*******?
+;;;++;+++++++++++++++++++;::;++**********????????????????????%#@@@@@#??%%%%#@?+++*?%%?%%%
*+;+++++*++++++++++++++++;::;;+***********?????????????*********%@@@@S?%SSS#S*++++??%%%%%%
*+++++++++++++++++++++++:,::;+************???????***************+*#@@@###@@#++++**?%%SS%%%
*+++++++++*+++++++++++*;,::+*????********??????%?*********+***?**+*@@###S@#?+***??%%%%??**
**+********************,:;+*?%???*******???????%%?*******++***??**+S@@###S+++**?%%%???****
***********************::;*?%%???******??????????%??******++******+?@#@@@#?*;*%S%%%%%%%???
?**********************;;+*??%???****?%?????????**?????*****++++**+?S%S?;;;::;**?%%%%%????
????????????????????????+++*????????%%%%%%??%???****??????**********+;:,,,,:::;+******++++
?????????????????????????*******??%%%%%%%S%%%%%???*****????????%?*;,,,,,::;;+******+++++++
???*?*****+**+;++++;;;;;;;;;::;;+?%S%%%%%%?????%%%%?*****??%???+:,,,,::;++*****+++++++++++
::::::::;::;::::::::::;;::::::::;*???????????????%???***????%;,,,,:;+*******++++++++++++++
,::::::;::::::;:::::::::;:::::::;++**???????????*?%%%?**?????:,,:+*???****++++++++++++++++
:::::::::::::::::::::::::;::::::;+***????%%%?????*????***????*:;*????***++++++;+++++++++++
,:,:,,::::::;::::::::::::;:::::;+***??????????????**************???***++++;+;;;+++*++*****
::,:::::::::;:::::::::::::::::;+**????????????????****?********????**++++;;;;;;+++++******
,,,,:::::::::::::::::::::::::;+*????%%%%???????????????******?????%?+*??**++;;+++++*******
,,,,:::;;;;;;::::::::;;;;;;::;+**????%%%%%????????????****??%%%%%?%?****++++++++++****??**
::::::;;;::::::::::::::::::;;++**???????%????????????***?%%%%%%%%%????*+;;::;;:;;++**?????
:;::::;++;;;;;;;;;;;;;;;;;;++**????????????????????????%%%%%%%%%?????????*+;;;;++*++**????
::,:::::::::::;;;;;+++*********???%??????????????????%%%%%%??????????????????************?
::,,,,::;;;;++++*******?????????????%%%????%%%%%%%%%%S%?????????????????????????**********
::::;;;++++**********?????????????????%%%%%%%%%%%%%SS??**********??????????????????*++****
;;;;;+++++**********???????????????????%SS%%%%%SSSS%?*++++++**********???????????????*++**
;;++****????????????????????????????????%SSSSSSSS#S?++;;;+++++************?????????????***
+**????????????????????????????????????%%%S#######%*++;;;+++++++*************???????????**
??????????????????????????????????????%%%%SS######%?*+++++++++++****************??????????
???????%%%%%%%%%%%%%%%%%%??????????%%%%%%SSS###@@#S%?***+++++++++***************?????%?%SS
??%%%%%%SS%%%%%%%%%??????%%???%%%%%%%%%%%%%????%%%%%SS%?**+++++++*****************?%SSSS%%
%%%??%%SSSSS%SSSSSSS%S??%%SS???%%??????***********???SS%%%****++*******+************?%%???
?%%%%%SSSSSSS##SSSSSSS??%S#%%%S##S??**??***?????????????%%%?*****************************?
S##SSSSS#SSS####S%SS?%?**%#%??%SS%?????S?*??????????????%%%%%?**********++**************