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