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