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