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