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