SSSSSSSSSS%%%%%%%??%%%%%?????????*?????***????%??%???????????*****?**+**???*****????????%%%%%%%%%%SS
@@#S%%%%??%%%???????????????????**???*****???***??*????*+****************???***?????????????%%%%%%S%
@#S%???*****+++++++++;+;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++*????*******
##SS%%%??**+++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;+?SS#%******
SS%%%%??*++++;;;;;;;;;;;;;;;;;;;:;:;;:;;;;::;;:;;;;:::::::::;;;::::::::::;;:;;;;;;;;;;;;;?SSSS*+++**
*******+++++;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;?SSS?++++**
*****++++++;;;;;;;;;;;:::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::;;;;;;;;*%S?*+++++*
***++++++;;;;;;;;;;;:::::::::::::::::::::::::+%S*:::::::::::::::::::::::::::::::;;;;;;;;;+*???***++*
*??*+++++;;;;;;;;++;;;::::::::::::::::;;;:::+S###*::::;**+:::::::::::::::::::::::;;;;;;+++*?????**++
S#@#?++++;;;;;;;%S%%%*;:::::::::::::+?%%?*+;%#####?::;%S%?*+:::::::::::;?%%%+::::;;;;+?%%????????*+*
@@###?+++;;;;;;;?S##S?+;+**;;;:::::;?SSS%??%S######?:+S%%SSS?;:::::::::?SSSS?;:::;;;;;+***?%%SS%?*+*
@@#%%?*++;;;;;+*?%SSS%%*+++*??**;;:?S###S%?%%S######+:+?%%%%?+;;;;:::::*%%%%%*;;;;::;;;;;;*S###S%*++
###%???%?*+;;?SSS###%??+:::++++****%S#SSSS?**?%S####*+???%%?*;;;++;:::+*%%%%?++***+;;;++*?%SSSS%?*++
##S%%%S#S?**?########?*;;+?%+::::;;*%SSSSSS##%%%SS#S%%SS%%S%?+;+?%?++?%%%%%%%?%%%?*+*??%SSSSSSSS%?**
@@#####S%?%%%**%S####S%?***%%;:::;;+?SSSSS*%%???%%%??%%%%SSS%*++*%%%?**?%%%%SSSSS%%*+;;;+SS######S%?
##@@@@#%%S##?;;;?######S%?*+**::;++++?SSS%*???%%%?++*%???%%%%?*++???;:;*???%%%%SSS%?;:::;*%%%%SSSSS%
#S###@######S+;+%SSSSSS#S%?*+**++;;+*%%%%?*?%%%%%%*+;?SSS%%%%%**+***;;;*?%%%%%%%%%%?*;;;;+?%%%%%SSS%
%%%SSS#SS%%SS*+*?%%?***?****+*+;;;*?%%?*??%%%%%%SS#%**%%%%??*******+;;:;*?%%%%%%%??**;;;;*?%%%%%%%%%
SSS%%%%%%???**+++****++;;;+++*+;;*???%%?*%##S##S%S###S?*************++;;+*???%???***+;;;**????????%%
SS#######SS%%?*******++;;;;;;+****?*?%%?S####S#SS@####S?***++++++++++**********++++******??????%%?**
?%SSSSSSSSSSSS%%%%%%?++;;;;;;;+******?**%##@@#########SS?**++;;;;::;;;;++++++++;;;;;;+++++**??*??%?*
??????************++;;;;;;;;;;;;++*???*+*##@@#####@@@@@#S+;;;;;;;;;;;:::;;;;;;;;;;;;;;;:::;;+++*****
**++++++++;;;;;;;;;;;;;;;;;;;;;;;+*?**??%S%########@@@@@#*:;;;;;;;;;;;:::::::;;;;;;;;;;;;;++*****??*
*+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*#S%#######@#####S?;;;;;;;;;;;;;;;::::;;;;;;;;;;;+*???????%%%
+++++++++;;;;;;;;;;;;;;;;;;;;;;;;+*+?SS#@S#@@@######S##SS%;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*???%??%%%%%
++++++++;;;;;;;;;;;;;:;;;;;;;;;;;;;*S@@@@@#?*S@#@#SSS#@#S%;:;;;;;;;;;;;;;;;;;;;;;;;;;;;*????%???%%%%
++++++++;;;;;;;;;;;;::;;:::;;;;;:::*#@@@@@?:,+#S@@@@@@@@#S*::::;::::;;:::::::;::::::;:+%%%%%%%%?%SS%
+++++;;;;;;;:;::;:::::::::::::::::::;;+**+::::%S#@@@@@@@##%;::::::::::::::::::::::::::+%SSSSSSSS%??%
++++;;;;;;;;::;:::::::::::::::::::::::::::::;*##S@@@@##@##S+:::::::::::::::::::::::::::?SSSSSSSSS?++
+++;;;;;;;;;:::::::::::::::::::::::::::::::+S###?#########S;:::::::::::::::::::;++*+*?++*?????%%%?**
+++;;;;;;;;;:::::::::::::::::::::::::::::::+###@%S#######@%::::::::::::::::::::+?%%?*%%????????***??
++;;;;;;:::::::::::::::::::::::::::::::::::%###@S%#######@?,:,::::::::::::::::;*%?+;::;*?%%%%%%SSSSS
+;;;;;;;:::::::::::::::::::::,:::,,::::::::S###@#%#######%;,:,::::::::::::::::::?;,:::;?%SS%%%%%SSSS
++;;;;;;;;;;;::::::::::::::::,,:::::::::::,+###########@*,,:,,::::::::::::::::::*:::;+*%SS%%%%%%%%%%
+++;;;;;;;;;:::::::::::::::::,,:,::,::::::,*###########%:::::::::::::::::::::::+;::+*?%SS*;*S%%%%%%%
++;;;;;;;;:::::::::::::::::::::::::::::::,:S###########+,:::::::::::::::::::::;*:;*%%SS*;::;?S%%%%%%
;;;;;;;;;::::::::::::::::::::::::::::::,:,+###########S:,:,,,:,,::,,:,:::,,,,,**+?%SS?;:::;:;?%%%%%%
+++;;;;;;;;;;;:::::::::::::::::::::::::::;%###########*,:::,:::::::::::::::,:;%??%S?;:::;;;;;;**??%S
+++++;;;;;;;;;;:::::::::::::::::::::::::::+##########*,::::::::::::::::::::++?%%S%+:::::::::::+??%%S
++++;;;;;;;;;::::::::::::::::::::::::::::,,%@########+,:::::::::::::::::::+%SS%;;:,:::::::;;;;+S%%SS
+++;;;;;;;;:::::::::::::,:::::::::::::::::,+#########%:,:::::::::::::::::::*%%;:::;;+;;;;?#######S%%
+++++;;;;;;;:::::::::::::::::::::::::::::::+####*;S##S:::::::::::::::::::::;**;:+%##############@#%?
+++++++++;;;;;;;:::::::::::,::::::::::::::::+%%%;,;%%*::::::::::::::::::::+****?###@@@@#S#####@@@@S+
+++++++++;;;;;;;;:::::::::::::::::::::::::::,+??+,:*?*::::::::::::::::::;*?*?%####@@@@#######@@@@@@%
++++++;;;;;;;:::::::::::::::::::::::::::::::,:??+::*?*::::::::::,,:::::;*??%S##@@@%**S######@@@@@@@#
++++++;+;;;;;::::::::::::::::::::,:::::::,:,::*?*::+**+:::::::::::::::;**?%*+??%%*::+S#####@@@@##@@@
++++++;;;;;;:::::::::,,::::::::::::::::::::;+*??+;;;;;;::::::::;++++:;**?%SS*****;;?SS#####@@@@#S@@@
+++++++;;;;;;;;::::;+++++++++++;+;;;;;+++++****+++++++++;;;;;;;++++++;++++***+*?**?%###S%????S#S%SSS
+++++++;;;;;;;;:::::;+?%%%%?%%????????%%?%???%???%%??%?????????%%%?????????????%?**?#SS%%S%%%???%%%%
++++++++;;;;;:;:::::::;+*%S%%%%%%%%%?%S%?%%%%%%?%%%?%%%%%%??%SSSSSS%SS%%%%%%SSS%**?%SSS?S#%SSS#S%%%S
+++++++;;;;;;;:::::::::::;?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S#SSSSS#S%%%%%%%%%%S%??%%SS#SSSS#######S%
+++++++;;;;;;;;;;::::::::::+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S%%SS#S%%%%%%%%%%SSSSSSSSSS#####SSS####
**++++++++++;;;;;;;;::::::::;+++++++++************?????????????%%%SS%%%%SSSSSSSSSSSSSSSSSSSSSSSS####
***+++++++++;;;;;;;;;:::::::::::::::::::::::::::::::::::::;++++*????????*????%%%%?????%%%??%%%%%%%%%
**++++++;;;;;;;;;;::::::::::::::::::::::::::;;;;;;;;;;;;+++**+++*******++++******************???*???