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