%???????????%%%%??*+*****??************************************+****++++************?***??????????%%
S%%%%???????%SSS%%*******************************************+*++++++++++******???????%%%%%%%%%%%SS%
%%???????????????****++++++++++++++++++++++++++++++++++++++++;+++++;++;+++++++++++*++*************??
%%%??????????****???**++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++*******
%%%%%%%%%%%%%%%%%%%%%%%?+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++******
####################SSS%+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++******
#@@@@#######@##@@####S%+;;;;;;;;;;;;;;;;;;;;;**;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++******
%%%%%????????????????*+;;;;;;;;;;;;;;;;;;;;;+##+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++*+****
**+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%##S+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++****
**++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;?##S%%?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++***
**+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;?####S##*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++**
*+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%###@@#%*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++****
++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+%??%##@#*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++**
+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*??%SS?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++
+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;?%??%?*++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;+++++++
+++++++;;;;;;;;;;;;;;;;;;;;;;;:;::::::;+?SSSS%%%%%?*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++*+
++++++;;;;;;;;;;;;;;;;;;;;::;:::+*????%S####SSS%%%%%*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++
+++++;;;;;;;;;;;;;;;;;;:;;:::::?############SSSSS%%%%*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;+++++++
+++++;;;;;;;;;;;;;;;;:::::::;:;#####?+;?S###SSSSS%%%%?;:;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;+++++++
+++++;;;;;;;;;;;;;;;;;;::;;;:;%@#%*;;:::;%###SSSSS%%%%?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
+++++;;;;;;;;;;;;;;;;;;::;;:;?SS*::;;;;:;?S##SSSSS%%%%%*;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;++++++
++++;;;;;;;;;;;;;;;;;:;::::;;+?*:;;;;;:;*%#SS#SSSS%%%%%%+:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++
+++;;;;;;;;;;;;;::;;;;;::;;;::;;;;;;::;**+%%SS#SSS%%%%%%?+:;;;:;;;;;;;;:;;;;;::;:::;;;;;;;;;;;+++++*
+++;;;;;;;;;;;;;;;;:;:;;::::;:;;;:;;::;+;::;%SS#SSSSSSSS%?;:::::;:;;:::::::;;:;;:::;;;;;;;;;;+++++++
+++;;;;;;;;;::::;::::::::::::;;;;:;:::::::::*S#SSSSSSSSSSS%;:;::;;;;:::::::;;;:::::;;;;;;;;;;+++++++
++;;;;;;;;;;;:::::::;::::::::::::;:;::::::::;%S#SS##S####SS+:;;;;;;;;;;;:::::::::::::;;;;;;;;;;+++++
++;;;;;;;;;;;:::::::::::::::::::::::::::::::*#S############?::;:;::::;;;;;:::::::::::;;;;;;;;;;+++++
+++;;;;;;;;;;::::::::::::::::::::::::::::::+?#############%+:;;::::::;;::;:::::::::::;;+*****+;+++++
+++;;;;;;;;;;::::::::::::::::::::::::::::::;;S###########?:::;:::::::::::;:::::::::::;*??????*++++++
++;;+;;;;;;;;:::::::;:::::::::::::::::::::::;S##########S;::::::::::::::::::::::;:;;;;++++*?********
++++;;;;;;;;;:::::::::::::::::::::::::::::::;S##########*:::::::::::::;:::::;++++;;;****++*????*++++
++;;;;;;;;;;;:::::::::::::::::::::::::::::::+##########%;::::::::::::::::::::;+;;;+*????***?????*+**
+++;;;;;;;;;;;::::::::::::::::::::::::::::::%##SS#####%;:::::::::::::::::::::;++*??%%%%%%???????????
+++;;;;;;;;;;;;:::::::::::::::::::::::::::::?S#######%::::::::::::;::::::::::;*??%??*+;+*???????*???
+++;;;;;;;;;;;;:::::::::::::::::::::::::::::;S###SS#S?;:::::::::::::;::;:::::::;;++::;;;;;??????????
+++;;;;;;;;;;;:::::::::::::::::::::::::::::::%#SS?+S#S+::::::::::::;::::::::::::::+;;;;;;;?%????????
++++;;;;;;;;;;;::::::::::::::::::::::::::::::?#%?*:?#%+:::::::::::::::::::::::::::;+;;;;;;+?%???????
+;;;;;;;;;;;;;:::::::::::::::::::::::::::::::;+*;;:;*;;:::::::::::::::::::::::+**++++;;;;;;*????????
+++++;;;;;;;;::::::::::::::::::::::::::::::::::++;;:+;;:::::::::::::::::::::+%###S%?????????*?????%%
++++++;;;;;;;::::::::::::::::::::::::::::::::::;+;;:++;:::::::::::::::::::+%#####S*+**?%%??????%%%%S
+++++;;;;;;;;;:;:::::::::::::;;;;;;;;;;;;;::::::+;;;**;:::::::::::::::::*%####@##S;;;+S#%**?**?%???%
++++;;;;;;;;;;:;:::::::::::::++**++++++++++++;;;;+;*%?++;;;:::::::::::;%@@##@#?;;*?????*++??*?%SSS%%
+++++;;;;;;;;;:;:::::::::::::::;*?***?**?*****?**+++++++;;::::;;;::::+S@##@#S*;;*S%%%?+++?%%????%%SS
+++++;;;;;;;;;;::::::::::::::::::;?%???%%?%%?%%?%?*??*?*+++++;+++;;;?#####S*;++*?%%%*+++?SS%%%%%%?S#
+++++++;;;;;;;;;;::::::::::::::::::*????%%%%%%%%%%%%%%%%%%%%%??++++%#@##S%??**??*?*+**+*%%%%SS%%%%S#
+++++++++;;;;;;;;;::::::::::::::::::;;+++***??????%%%%%%%%S%%SS?+*?%%SS%%%?%%%?***+++**?%%??%%??**??
+++++++;;;;;;;;;;;::::::::::::::::;;;;;;;;++++++********????%%S%?*?%%%%%%%%%S%%?++++**?%%%%#%*******
+++++++;;;;;;;;;;;:::::::::::::::::::;:;::;;;;++++++++++++****?????%%%%%%%%%??*++++**??***??*****???
*+++++++++;;;;;;;;;;;;:::::::::::;::::::::;;;;;;;;;;;;;;;;;;;;;++++++********+++++***????**???*????%
*++++++++;;;;;;;;;;;;;;::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++++++++*******??*?????
*++++++++;;;;;;;;;;;;;;:::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++********?
***++++++;;;;;;;;;;;;;;::::::::::::;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;:;::;:;;;;;;+++++++++***********?
***+++++++++;;;;;;;;;;;;:::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;++++++++++*********??
****+*+++++++;;;;;;;;;;;::;:;::::::::::::;;;;;;;;;;;;;;;;;:;::;::::;;:;;;;;;;;;;;+++++++++*******???
*****++++++++;;;;;;;;;;;;::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;+++++++++*******???