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