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