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