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