%%%S#####?*****???******+++****+++++++++++++++++**+++**+++++++*++++++++***?**++********??????????%%%
%%%%SSSSS?****?%S%**+*++++++++++++++++;;;;;;;;;+***++***++++++***++++++*****+**********????%%%%%%%%%
%%%%%%%?*******???**++++++********++++;;;;;;;;;;;++++++**+++++++++++++++***************???%%??????%%
??%%%%%?**++++*++*+*+++++++++++++++++++++++++++++;;;;+++++++++++;;+++++++++++++++********??*******??
?%????%?*****+++++++++++;++++++++++++++++++++++++++;++++++++++++++++++++++++++;;;+****************??
???***********++++++++;;;;;;;;;;;++;;;++;;+;;;;;;+;;;;;+;;;++;;;;;;;;;;;;;;;+;;;;++++++*+++*********
***************++++;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+?#?;++++;;;;;;;;;;;;;;;;;;++++++++********
***********??***+++;;;;;;;;;;;;;;;;;;;;;;;++****++;;;;;;;?###*;++*%?*+;;;;;;;;+****???*+++++********
***********?%%%%%?*+;;;;;;;;+;;;;;;;;;;;+*SSSSSS##S?+;;;?#####+;;+*S##%*+;;;+?SSS###%%%*++++********
*******+++**??%%%?++;;;;;;;;;;;;;;;;;;;;+%####S%??%%*;;*#######*;;;+*S###%?+*%S%%SSS%?*+++++++******
******+++*******?*++;;;;;;;;;;;;;;;;;;;;+*%SSS%%*++++;+S########?++;;;+*?S###%%??????**++++++++*****
****+++*********++;;;;;;;;;;;;;++++;;;;;;;+?????*?%%%*%S#######@@?;;;;;;;;+*??%%%%%?*++++++*********
****+*********++;;;;;;;;;;;;;;++++++++++**+++++*%####**?%S#@@@@@@#+;;;;;;;;;;;+?%SS%*++*+++*??***???
*************++;;;;;;;;;;;;;;;;;;;+;;++++*%%SS%S##@#S****?%#@@@@@S;;;;;;;;;;;;;*S###%%???+++++++**??
*****???****++;;;;;+;;;;;;;;;;;;;;;;;;;;+?S#S%?%S#@S%SSS%?%SSS#@#+;;;+**???%%SS#@@@####S%*+++*******
******??****+;;;;;;;;;;;;;;;;;;;++;;++*?%%?++;+S#@@#??S%*???%??#*;;;;?#S%???????S@@@@@@@#%++*?%%S#SS
***++**?***++;;;;;;;;;;;;;;;;;;;+*++****++;;;;+%@@@@%+***??????+;;;;+%S**%%*+;;;*#@@@@@@@S*+++***%S#
***+++******+;;;;;;;;;;;;;;;;;;;+*++++***++++;;%@@@@#???%%%%?%+;;+*%S##?*S@#S%*+*#@@@@@@#S*++++?%%%%
*+*++++*****+;;++;;;;;;;;;;;;;;;;++*??%??*****+%SS##@#%%%??%%%%?*?######%?S@@@###@@@@@@@#%+++*%#@@@@
*+*+++++****++;;;;;;;;;;;;;;;;;;;+*??*++**??%%%SS??%S#SSS%%%S#S%??%###%*+++%@@@@@@##@@###?++%#@@@@@@
+++++++*****++;;;;;;;;;;;;;;;;;;+?%??+;;++++?S#@@####%##SSS#S%S%%????+;;;;;+S@@@@@##@@S%%**%#@@@##S%
????*?*******+++;;;;;;;;;;;;;;;;+****?*+;;;;;*###@@@##@@S#@###SSS%%%?;:;;;;;+%#SSS##@@#%%?%#@@#S?***
%%%%%%%%%%%%%%%%%%???**++++++**+;++*?*+;;;;;;;++++++?#@@S%#S##SSS%%%%%+;;;;;;;++;;+*%%%????%%%?*****
SSSSSSSSSS%%%%%%%SSSSS%%%%%%%%?*****+;;;;;;;****;::;%#@@#%##########S%%+;;:;;;;;;;;;;;;;;;;;;;;;;+++
%%%%%%%%%%%%%%%SSSSSSSSSSSSSSS%??*++++++++++%#S#S*+%##@@@S####@@@@@@@##%+;;;;;;;;;;;;;;;;;;;;;++++++
++++**++++***????????????????????****++++++++S####@@@@@@@#S##SS##@@@@@##%+;;;;;;;;;;++++++++++++++++
*******+++++++++++++++;;;;;;;;;;;;++++;;++++;+*?%S###@@#%%SS#SSS#@@@@###S?;;;;;;;;++++++++++++++++**
*+++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;++*******+*%%*%%%%%SSS######@##SSS%+;;;;;;;++++++++++++++++**
+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++********SS*SS##SS#######S#@#S#S%?+;;;;;+++++++++++++++++**
++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*#?%#@@@@@@###SSS@@@#SSS%+;;;;++++;+++++++++++++**
++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%S%%%??**S@@@@@@@@@@@S%S*;;;;;;;+;;+++++++++++***
++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;;::;?#@@@@@@@@@@@#%*;;;;;;;;;;;;+;++++++++**
++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;:+S@@###@@@@@@@#?;;;;;;;;;;;;;;;+++++++*+
+++++++++;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:*%#@###@###@@@@S;;;;;;;;;;;;;;;;;++++++*
++++++++++;;;;;;;;;;;;;;;;;;;;;;;;:;;;;:;:;;;;;;;;:;;;;;;;;;S%S#######@@@@@#;;;;;;;;;;;;;;;;++++++**
+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;:;;;;#%?#######@@@@@#+:;;;;;;;;;;;;;++++++++*
++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;?#S?####@#####@@@+:;;;;;;;;;;;;;;++++++++
+++++++++;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;S##*S#########@@@*:;;;;;;;;;;;;;;++++++++
++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;%##?S#####@@#@%?S?:;;;;;;;;;;;;;;;+++++++
++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%#######@@@@@%::::;;;;;;;;;;;;;;+;+++++++
+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;S#######@@@@@+::::;;;;;;;;;;;;;;;;+++++++
+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;:?#########@@@@*::;;;;;;;;;;;;;;;;;+++++++*
+++++++++++;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;:;S@#########@@@%;;;;;;;;;;;;;;;;;;;+++++++?
+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:*#@###@######@#*:;;;;:;;;;;;;;;;;;+++++++**
**+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;S@###########@%:;;;;;:;;;;;;;;;+++++++++++*
*++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;+S@##########%;:;;;;;;;;;;;;;;;;+;++++++***
*+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;:+#@@@@@##@@S;:;;;;;;;;;;;;;;;;;;+++++++***
***+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;:%@#@@@##@@S;:;;;;;;;;;;;;;;;;;++++++++***
*****+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;:*@@@@@#####*:;;;;;;;;;;;;;;+;;+++++++++**
******+++++++++++++;;++;++++;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;:+#@@@@@@##@#+;;;;;;;;;;;;;;;;+++++++++***
*****++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;?%SSS%S###%+;;;;;;;;;;;;;;;;;++++++++***
******++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*??*+???+;;;;;;;;;;;;;;+++++++++++++++
****+*+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;:+???+*??*;;;;;;;;;;;;+++++++++++++++++
*******++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*?*++??*;;;;;;;;;;;;+++++++++++++++++
******++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*?*++??*+;;;;;;;;+;+;++++++++++++++++