%%SSS#S??%????**+*+++;;;++;;;+;;;;:::::;?*+;+?%*+++**+++,,,:++;?%%?***?%%+;;+**++*%SS%***%%%%%%%%%%%
%##SSSS%?%%?***+++;;;::;;;:;;::::+;::::+??*++++;;+++*++;,,,,;+;+****+*??*+*????**?%%S????%%???%%%%?%
%SS%%??????******++*???%?++++;;;;*+;;;;+?***+;;;;+++**+:,,,,:+;;+++++**++;++****+*%%S**?%???????????
%??****?**??????+::;+*?%?+;;++;;++++;;:;;++++;;;;;;+++;:::;;++;;+;;;;;;;;+++;;+**?%SS*++*+*****??**?
#SS%%%%%%%%??%%%%?***++;;;++**++****++;+???+;+*++++++++;;+*++++;++++++;;**??***+*?%%%********?SS%%%?
???*****++++++++++++++++;;;+++;;+++;;;+;++;;;;++;;;++++*??????+;;+++++;++++++++++++++++*******??????
+++++;+;;;;;;;;;:::::::::::::::::::::::::::::::::::::+**+++++*+;:::::::::::::::::::;;;;;;;;;++++++**
++++++;;;;;;;;:;;::::::::::::::::::::::::::::::::::::;+**?%%?++:::::::::::::::::::::;:;;;;;;+++++++*
+++++;;;;;;;:;::::::::::::::::::::::::::::::::::::::::++?%*+S?+;::::::::::::::::::::::;;;;;;;;+++++*
+++++;;;;;;:::::::::::::::::::::::::::::::::::::::::::+++?*?S**;:::::::::::::::::::::;;;;;;;;++++++*
+++++;;;;;;::::::::::::::::::::::::::::;?:,,:::::::::::*+*%%*;+;:::::::::::::::::::::::;;;;;;+++++++
+++++;;;;;;;:::::::::::::::::::::::::::?#%*+:::::::::::+++?%??+;:::::::::::::::::::::::;;;;;;;++++++
++++;;;;;;;;::::::::::::::::::::::::::;S###S%:::::::::::+++?%?;::::::::::::::::::::::::;;;;;;;++++++
++++;;;;;;;:::::::::::::::::::::::::::+?%SS#%:::::::::::+*++??;:::::::::::::::::::::::::;;;;;;++++++
+++;;;;;;;;::::::::::;;;;;::::::;;:;;+?***%%*::::::::::::*+++*?:::::::::::::::::::::::::;;;;;;;+++++
++;;;;;;:::::::::::::::;;;;**%?%SS%?%?%%%%?????+,,,,,,:::+*+++?*:::::::::::::::::::::::;;;;;;;;;++++
+;;;;;;;:::::::::::::::::::+*???%%?%S##SSS%%%%%?:,:,,,,,,:*++++?+::::::::;;++++****???*++;;;;;++***+
+;;;;;;;:::::::::::::::::::,,,:::,,,:+S#SSS%%%%%;,:,,,:,,,+*++++*;,:,,::;;++++++++****+;;;;;++****++
;;;;;;;;:::::::::::::::::,,::::::::::,+SS%%%%%%%*,,,,,,,,,:*+++++*;:,:;;;;;;;;;;;;;;;+++++++++++++++
;;;;;;;;::::::::::::::,,,,,,,:,:,:::::,+%%%??????+:,,,,,,,,;+;+++++;;++*****+***********************
+;;;;;;;::::::::::::::,,,,,,:,,:,:,:::,:?%%%%%???%*:,,,,,,,,;+++++++++++**********??????*++*********
+;;;;;;:::::::::::,:::::,,,,,,:,,:,,,,,:?SS%%%%%%%%?;,,,,,,,,;++++++++++++++++;;;;;;;;;+?SS%*+******
;;;;;;;::::::::::::,,,:::,,:,:,,,,,:::,,?SSSSSSSSSS%?;,,,,,,:;++++****+++++++++++;;::::;**??*++;;+**
;;;;;;;:::::::::::,,,,,,,,,,,,,,,,,,:::,*SSSSSSSSSSS?;,,,,,,:+++*?%%?**++;+++++++++++;;;;*???***+*??
;;;;;;:::::::::::,,,,,,,,,,,,,,,,,,,,,,,:?#S#SS####%:,,,:::,;+++?*%?*****+::;+++++++++++;;*?????????
;;;;;;:::::::,:,,,,,,,,,,,,:,,,,,,,,,,,,,*#########S::;;;::,;++;;+***?????;:::::;++++++**?+**??*****
;;;;;::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,?#########%:;++;:,,,;**++++++****+;+;;::::;+*?%%%*+*?%?****
;;;;;;:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,?#########*,,::,,,,,,:+***+++++;;;:::;;;::;??%??**?**??***?
;;;;;;:::::::::,:,,,,,,,,,,,,,,,,,,,,,,,,?########%:,,,,,,,,,,,,,;*+++++;;;;;;:;;;:+*+++*?*++****?**
;;;;;;:::::::::::,,,,,,,,,,,,,,,,,,,,,,,:%#SS####%:,,,,,,,,,,,,,,:++***++;;;;;;;;;+****???+++++++*??
;;;;;:::::::::::,,,,,,,,,,::;;:,,,,,,,,,,*###S###+,,,,,,,,,,,,,,,:::;**++++++;;++*?*++????*+**++**??
;;;;;;:::::::::,,,,,,,,,;**?*:,,,,,,,,,,,:%SS*+SS*,,,,,,,,,,:::::::::+*+*++++**??*+:::+????**???????
;;;;;::::::::,,:::::,,,,:*?;:,,,,,,,,,,,,,?%*;,*S*:,:;;;;:::;;;;;;;:;;+;+++++***+++;::+?????????????
;;;;;::::::::+++;::,,,,,,:;,,,,,,,,,,,,,,,:;;::;;;;;***********??+;:;++++++++++++++++**?????????????
;;;;;;;;:::::;::::,::,,,;;;++++++++++++***??+;+*+;*S?*******?S?;:::;+++++++++++++**+++**????????????
+++;;;;;;;;;;:::::::::::+***+++++++;;;;;;;;;;;;;+++*+;;;::;?S*:::;+++++++**++++*?SS%%%%?**??????????
+;;;;;;;;;::::::::::::::::,:::,,,:++++++++;+;;;+*+;;;;:::;%#%:::;++++**+++****?SSS%%%%%*+****??**???
;;;;;;::::::::::::::::::::::::::,,:;*********++++;;;;;;;+%##*::;;;+*?%%*+++*?%%SSS?*?%%?*******???%%
;;;;;;;::::::::::::::::::::::::::::,:***?****????*??*++*SSS%*++++***??****+*??%%%*+;*??%%%?%%%%%SSSS
+;;;;;;:::::::::::::::::::::::::::::,:;;;++****??????**????*****+******?**+*+*?+;;;;;;:;;;;*???%%%%%
++;;;;;::::::::::::::::::::::::::::::::,,,,,,:::;;++*********?*?%?****???*++;++++;:::::::::::;;****?
;;;;;;;;;:::::::::::::::::::::::::::::::::;;;;;:::::::;;;;+++****++++++*;*+;*+;;;;;:::::::::;;;*%?%%
+;;;;;;;;;;:::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;+***+++++**+;;;;;;;;;;;;;;;;+??%%
++++;;;;;;;;::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++***
++++;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;::::;:::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;++++++*+***
+++;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;++++++++++**
+++;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;+++++++++**
+++;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;++++++++**
++++;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;+++++++****
+++++;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;+++++++++**
++++++;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;+++++++*****
++++++;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;++++++++****
++++++;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;+++++++****
+++++++;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;+++++++*****
***+++++++;+;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;+++++*******