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