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