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