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