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