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