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