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