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