********+++++??***?%?*+**?*++*+::;+;;?%?*+**%%*;;++*+;+?%%%*;;*??*?????*+*%?*+;+?%%?*+**????%%??????
********++++*%%?*+**++++*??***;:::;;+*+**+*??*+**???*+*%?%?+**???***??***??*++**?%%??**????%%%??????
??****??*++**???*++;;++++?***+::,,::;++++++*+;;+++*+*+;?%%*+*?*+++;+++;++++++++***???????**?????????
*****???***+++***+++++++++++;;:,,:;;;;;;;;;+;;+++;;;+++?%%*;;+;;++;;++;;;;;+;;;+**%%??%%?**??*???%%%
??????????***?%?*++*****++++;;;;;+++;;+*++++;+*??***++*???*++++++++?%?**++****+****??**???%%????????
********++++++++++++++++;+++**????**;++;;+;;;+++++++;;++;;;++++++++++++*+++***+*%?+;+++++*?????*****
*++++++;;;;;;;;;;;;::::::;+*?+++*+*+;:::::::::::::::::::::::::::::::::::::;*+++?S%;;;;;;;;;+++++++**
+++++++;;;;;;;;:;:::::::::;+*??%%%++;:::::::::::::::::::::::::::::::::::::;*+++%S?;;;;;;;;;;+++++++*
+++++;;;;;;;;::::::::::::::++?%?+%%+;:::::::::::::::::::::::::::::::::::::;*+++%S?::;;;;;;;;;+++++*%
+++++;;;;;;;:::::::::::::::;+*%**S*++:::::::::::::::::::::::::::::::::::::;*+++%S?::;;;;;;;;;+++++??
+++++;;;;;;;::::::::::::::::++?%%*;++::::::::::::::::::::::::::::::::::::::+*+?SS+::::;;;;;;;;+++*?*
+++++;;;;;;::::::::::::::::::+*%%?%*+:::?;,::::::::::::::::::::::::::::::::;++**+:::::;;;;;;;;+++***
++++;;;;;;;::::::::::::::::::++*%%?+;::*#S*;::::::::::::::::::::::::::::::::::,::::::::;;;;;;+++****
+++;;;;;;;;::::::::::::::::::;*+*%?;::;S###S%;:::::::::::::::::::::::::::::::,::::::::::;;;;;++****?
+++;;;;;;;;:::::::::::::::::::+*;*%+::+?SS##S;:::::::::::::::::::::::::::::::,+*;::::::::;;;++***??*
+;;;;;;;:::::::::::::;;;;;;;;:;++;;;;*?***?S%:::::::::::::::::::::::::::::::,:?%*::::::::;;+++*****+
+;;;;;;;::;:::::::::::::::**%%??%%*???%%???%**++;++++*******+;::::::;++;::,,:;*??+;;;;;;;;;;;+***+++
+;;;;;;;::::::::::::::::,,;+**?%%SSS#SSSSS%%%%%?+;++++++***+;;;::;;++++;:,,:;++***;;;;++;;;;;;;+****
+;;;;;;;;:::::::::::::,,,,,,,,,:+*++*S##SSS%%%%%+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++**
+;;;;;;;:::::::::::::,,,,,,,,,,,:++++*S#SSS%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++*
+;;;;;;;::::::::::::,::,,,,:,,:,,;++++?SS%%%%%%%%*******?????*+++++++++++++++++++++++***************
;;;;;;;:::::::::::::::::,,,,,,,,,,;*++*%SS%%%%%??+;;;;;;;;;;;*%SS?+++;;+++++++++++**+***************
;;;;;;;:::::::::::,,:,,,,,,,,,,,,,,+?*+?SSS%%%??%?+;;++;:,,,,;****++;:;+++++**+++***+++++++;;;;;;+++
;;;;;;;:::::::::::,,:,,,,,,,,,,,,:,,*%%%SSSSS%%%%%?*++++++;:::;*****++;****??*++*;;;++++++;;;;;;;+**
;;;;;;;:::::::::::,,,,,,,,,,,,::,,,,:?%%%SSSSSSSSS%%*++++++++;:;****??***????*+?S?++++++++;;;;++****
;;;;;;::::::::::,,,,,,,,,:::;;;:,,,,,;?%SSSSSSSSSSS%*;+++++++++++*****+**????**%S#%*+++++*???%????%%
;;;;;:::::::::::,,,,,,,,,::++;:,,,,,,:*%S#########S;:,::;+++++++++*******+**+++???++++***?%%%???%SSS
;;;;;;;::::::::::,,,,,,,,,,:::,,,,,,,,;?S#########%::,,,,,:++++++++***++++++++++++++*??%%%%%?+******
;;;;;;:;;::::;;;;::,,:,,,,,,,,,,,,,,,,:+S#########?:,,,,,,,;+++++++++++++++;;;;;;;++??%SS?***??***?%
;;;;;;;;:::::;++;:,,,,,,,:,,,,,,,,,,,,,+S########S;,,,,,,,,,:;+++*****++*++;;;:;::;+?%%*+++*??**??*?
++++;;;:::::::::::,,,,,,,,,,,,,,,,,,,,,*#########%+,,,,,,,;+**????%%%%****+;;;;;:;;+*%*++**???++**+*
%%*;;;;:::::::,,,,,,,,,,,,,,,,,,,,:::::%SS#####S*+*:,,,,,:*??*?SSSSSSS?*?*+++++++++??***?%????++++++
?+;;;:::::::::,,,,,,,,,,,:;+;;:::;;;;;;?####S##?::;+:::::::;;;+?%S####%??**?????????*+*?%%?????*****
;;;;;::::::::::,:;;;;;;;:+*********++***SSS%?SS?****++++++++++?%?*?S##S????*??????**+*?%S%??????????
*****************???????S%?**?**??****%%%?+++?%*+*???**+++++++%SS%***%%*???***???***?%S##%%?????????
%???****++++;;;;;;;;;;;;+;;:::::;;;+***??*;;*?;;*?%%%SSSS%%??%SS?++**++++*?**??**??%%%%%%%%?????????
++++;;;;;;;;;;;::::::::::::::::::;;;;++++;;;;;;;;;;;;;++++?SS#?;:;*??*;;+++*??*+?%%?*****???????????
+;;;;;;:::::::::::::::::::::::::::::::::::;;;;++;:::::::;?###S*+++?%%?++*******?%%SSSS%?**????????%%
++;;;;;;::::::::::::::::::::::;+++++++++++;;;+*+;;;;;::;%###S**???????;;;+****?%S####SS%******??????
+;;;;;;;;:::::::::::::::::::::::+*************++++;;;;+%S#S?;;+*?????**++++++?%S##SS####S%????????%%
+;;;;;;;;;;::::::::::::::::::::::;?????????????????++*%SS%***+++++;;;:::;;;++*?%%%??%SSSSS%%%%%%SSSS
+;;;;;;;;;::::::::::::::::::::::::;+++*****????????*+*?********++;;;;;;;;;++++;+++**+**?****?***????
+++;;;;;;;;::::::::::::::::::::::;;;;;;;+++++*****??***+*****+++;;;;;;;;;++++;;;;;;++++*****?**????%
++++;;;;;;;;::::::::::::::::::::::;;;;;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++**??%?%
++++;;;;;;;:::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;++++++++++****
++++;;;;;;;:::::::::::::::::::::::::::::;:;:;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++**
+++;;;;;;;;;::::::::::::::::::::::::::::;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;++++++++++*
++++;;;;;;;;;:::::::::::::::::::::::::::;;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;++++++*
++++;;;;;;;;;;::::::::::::::::::::::::::;;;;;;;;;;::::::::::::::::::::;;;;;;;;;;;;;;;;;;;+++++++++**
+++++;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;++++++*+***
++++++++;;;;;;;;:::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;+++++++*****
++++++++;;;;;;;;;:;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;+;+++++++****
++++++++++;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;++++++++*****
**+++++++++;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;++++++++*****
***+++++++;+;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;+++++++******