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