.,::;:,.                                                       
                                                                                                 .,,:;:,.                                                       
                                                                                                 .,,:;:,.                                                       
                                                                           .                     .,::;:,.                                                       
                                                                       ...,,::;;;:::;;:::,,,,,,..,,:;;;:,.                                                      
                                                                     .,:;+***?*****+*****??*????**++*??*++*****???***+;:.                                       
                                                             .,,,::;;;;;;++**??%%%???***++++++++*???*?%%%%%S##@@@@S%S%%*??,                                     
                                                        ;*%??**++;;;;;++*?%%SS%%S@@@@##SS%%%%%%%%??%%??*%?*?%SS%%S@@@@#S%@%:.:                                  
                                                     ,*%%?++*??%%SS%%%%%%%%%S#@@@#SS#@@@@@@##S%%%????%SS?%S?**???S#@@@@@@@%*,:,                                 
                                                   .?S%S#%S#S%%%???%%S#####SS#@@@@@@#%%S#SS%%%????*?%*++,..,,,;+?%S#@@@@@@SS;  ,                                
                                                   %%S@SS?:..:,,,,::;;+**??S#@@@@@@@@#S?+::;;++++;::;;+*%SS##SS####@@@@@@@@SS?*+:::                             
                                                  ?S#@SS+,;+*+;;;;++*?%SSS#@@@@S?*;,..,,:;;;;++++*?S%S###@@@@@@S%%#@@@@@##@@@S%??*;                             
                                                .?#@@#S+;+*?**+*%S##@@@###SS?+,            ..,:;++*?%%SSSSSS###@#@@@@@@@??#??*++;:                              
                                               ;#@@@@SS;*?%???%#@@#S%%?*;,.                   ...,,,:;++++**???%%#S%#@@??%@?S?;??;::                            
                                             ,S@@@@#@#?*???*%SSS%??++;,,...          .     .,.        ..,,,::;+*?***%S*+?S%*@#:;S?+?+;.                         
                                            ?@@@@@##@S*?**%%S?*+;;,,.....,....     .          ...........,,,,::;+++*??+?%?*S@S:+S%?%#%?*:.                      
                                          ;@@@@@S%S#S?*??%?*;;::,..        .......       .,,:,,,....,,,,,,::::,::;++**+*%?%@@*:*??%#@##S%*+:                    
                                         ?@@@#S%%%????%%*+;::,..        .    .       .........,,,,,,,,,,::::;+;:::;+**+??%##*,*%?S#S#@#S%???;                   
                                        *@#%%S*+;+?%S%*;::,.         ..              ........,,,,,:::;;+;;:::;;;;;++*;+?%SS++?%%#@@#%SS#%%%S?,                  
                                       ,%??S%?*%S@@@%;,,,.                                    .,,:;;;:::;+++;+*++++**+??%?*?%SS#@@@@#@%S#?SSS%;                 
                                       ;+*S@#@#@@@@%;;+***??*+;+;,.              .,;:+++??**?%?SS%?++++++:;+***?++*++???%*%%S#@@@@@#SS###?%#@@#*.               
                                       :;S@@@@#@@@#:+?%%%%??*+;;+++;,.       .,:;;;;;;:;:::::;*?S###%?*?*;;;****?++?????*%S#@@@@@@@@#@#S##S#@@@#?,              
                                       ,%@@@@@@@@@;;%%+:,..,:;+*???*+:,.....,::++++;:,,..  ....,:+*?%%??**++*+++****????%###@@@@@@@@@@S@@@##@@@@#%:             
                                       ?@@@@@@@@@#.;+. .,::;;**?%%%?*+;,,,,::;+???%?*+;,.....  ...,:;;;+**+++++++*++**%%%S#@@@@@@@@@@#@@@@@@@@@@@@+*            
                                      .S@@@@@@@@@* . .,        .:*%%*;,.  ,:+?%SSSS?:         .,:;;;;:::,::;+;;;;+***?%S#@@@@@@@@@@@@@@@@@@@@@S@@S+%+           
                                      ,S@@@@@@@@@: .;:            ,;;,      :+*?%+,          ..,;+??**;:::,::;;;;+*?%%S#@@@@@@@@@@@@@@@@@@@@@@S##?S#?.          
                                      .S@#@@@@@@@,,;.   ...      .:++,     ,:;*?+,.. ...,,::::::;+**?%%%?*+;++***+**?%#@@@@@@@@@@@@@@@@@@@@@@@@#SS@@#.          
                                       +@@S@@@##?.,:.:;+;:,,,:*?%%%%?;    :+:;+;;++****+;::,,::;?%???%%???***+*??*??%S@@@@@@@@@@@@@@@@@@@@@@@###@S@@%.          
                                        ;SS++;*??*:::*%@@#@#S?,:%S%*;,   .:+++;:+%%#@@##@?*?*???*+;?SS%%?*++;;;*****+*?##@@@@@@@@@@@@@@@@@@@@###S%@@;           
                                        .;++++*??+:,,,:+***+;:,,;;;:,  ,;+?::::::,,;++++++*+++;;;++:*+;,,,.      .,:*%#@@@@@@@@@@@@@@@@@@@@@@#S%#@#?            
                                     +*?;:.  .:;+, ...,:;;;:::::;+:,    ;**++,,,:,,::::::,::,,,,:::;S@@;:    .:??*??%S#@@@@@@@@@@@@@@@@@@@@@S%%SS%+             
                                         +     ,;.   ,;**???%?+;++.    .;*%+S+,,,+*??**++;:;;;+**++;*:.....,:;+***?%%SS#@@@@@@@@@@@@@@@@@@@?+*?*,               
                                         ,:     .    .,;;+++;:,,+     .,,:*%**,...,;;*??%%???**++:,,; ....,:;;;++*??%%S#@@@@@@@@@@@@@@@@@@%,..                  
                                           ,             .,,.,,        ,:+*?%?,,,..  .,::::;,,,....* ,,,.,,:;+++*???%S#@@@@@@@@@@@@@@@@@@#                      
                                                    .,,..::::;    ... .,;:,,;*S*:.  .....,...,:::;+,,::::::;;+**????S#@@@@@@@@@@@@@@@@@@#.                      
                                                  .,,,,,,:;+* ,+++++;+*+:.   .;S@S%*;::,,,,::::;++++;;;;;;;;+*?????%S##@@@@@@@@@@@@@@@@#                        
                                                  ,,.  .,;+*%+S@%?%%%S@@#%?*+++?@SSSS%?*++++****?????++***+**?????%SS#@@@@@@@@@@@@@@@@@*                        
                                                 ..   .;*?%S#S?@@@%##@@@@@@@S%%##???**?????******?????******??%??%SS#@@@@@@@@@@@@@#SSS+                         
                                                     .;*?%S%;.:+***%SS#######SS?;;;+**+++***********????*?**????%SS###@@@@@@@@@@@#S%%:                          
                                                    .,+*?%+.  .,,:;;;;;:::;::::,,,:;++*+;;;;;++*+*****?????%%%?%%S####@@@@@@@@@@##S?.                           
                                                    ,;+?%;.     .,:,..,,,,,,:,,,,,,::;*?*+;;;;;+**??????????%%%%%S###@@@@@@@@@@@@S?                             
                                                 . .:+*?+.  :+*?%%*???+;::,,:,::,,,,:;;+??**++++++*%%%??%%%%%%%%%SS###@@SS@@@@#S*.                              
                                                 .,::;** ,*?:,,,:+?+;+?SS##S?+;;::::,:;;+%S?***++**%%?*?%%%%%%%%SSSSSSS%%%SS#S+                                 
                                                .,,,,::.;S@*?%S###S%%%%%%??%S#@@%***+;;:;*%S?*++++?S????%%%%S%%%SSSSS%%??**;                                    
                                                ,:::,,;?@#;*%%SSSSS###@@@@##S%%S@@@#%?*++*?%?+;;+*%S???%%%%%%S%S%%%???%%*,                                      
                                                 :;+;:++;+%%*?%SS#@@#####S%?**+****%#SS%S%%%;,:;*?%S???%%%%%%%%%%??**???.                                       
                                                 :+**%??S##S;?%??S###@@#@@S##S%?**+++***++;,,:+?%SS?*?%%%%%%%%S%%%?+*?*:                                        
                                                  :*%S%S###?;;++*****?*??%S##@@@@#%?*+;+***???%%S#%?%%%%SS%%%%%%%?*??+;                                         
                                                   .+?%?*:,:;+++*%S%%S%%%%?***?%S#@@@S?*;+*??%S###S%SSSSSS%%?%%????%+;.                                         
                                                     +*?,,;+*?%SSSS#S##SSS%?*++++;;*?SS#SS#@@#SS%??%%SS%%%%%%%%%%??*;,                                          
                                                      :**+++*%%SSSS#SS#SS%%%?++;;+****?%SS##S%%???%SSSS%SS%%%%%???*;;                                           
                                                       .;**?%%%SSS########S#S?%?%%S##S##SS%%???%%SSSSSSSS%%%??%?*+;;:                                           
                                                         :+*%SS######S##SSSSSSSSS#####S%?**??%SSSS%%SSS%?????%%?+;+::+.                                         
                                                          ,;**?%SSSS#S##########SSSS%%?**?%SSS%??SSSS%?????%%%??**+;:?@S.                                       
                                                           .++*?**???%%%%%%%%%%%%%%%%?%%SSS%?*?%SSSS%???%%%%%%%%?*++;;@@#;                                      
                                                             *?%%%%??%?????%%%%%%%%%%%%%?***??SSSS%%?%%%%%%%SSSS%??*++#@@S*                                     
                                                         :+*?S??%SSSSS#SSSSSSSSSSSSS%??**?%%%SSS%%%%%%%%SSSSSSSS%%%**?@@#S%?.                                   
                                                       ;S@@@@@@?%%SS###SSSSSSS%%%%%%????%%%SSS%S%%%%%%%SSSSS#S##S%?*?S@@S%?%?*.                                 
                                                       ?#@@@@@@@%%%SSSSSSSSSSSSSS%SSSSSSSSSSSS%%%%%%%%SSS#####S%?**?%#@%+++*?%%?+.                              
                                                       .%@@@@@@@@S?%SSS###############SSS%%%%??%%%%%%SS####%??*****?S#S;:;++*??%%%%*:                           
                                                         ;@@@@@@@@%??%S###########SSSSS%S%%????%%%%SSSS%?*++++++++*?%S;:;;+++***??%%%%%*:                       
                                                           :S@@@@@@S%%S########SSSS%%%%???%%?%%%S%?*+;;;:::;;;+;;++*?;,,:;;++;++++***??????+:.                  
                                                              *@@@@@#############SSSSS%%%??%%%?+:,,,,.....,,,::;;;;;;,,::;;++;;;;++++;;+**+****+:.              
                                                   .;           .*#@@@#####@@##SSSSSSSSSSS?+:.....        ..,,,:,,:+,.,:;;;;;;+;;;+++;;:;;+;;+++++++;,          
                                                  ,?@              ,+%#@#@@@@@##SS#####%+.                 ...  .:;: .,,,:;;+;;;:::;;;;;;:::;;;;;;;;;;;;::.     
                                                .+#@#                  ,;?#@@@@###@#?:                          .,:, .,,,:::;;;;;:::;:::::,;::;:::::;;;::::::;:,
                                               ,%@S:                       +@@@@S;.                             .,,. ..,,,,:,::;::::,,::::::::;::::::,:::,::::::
                                             ,*#%,                        ,*. .,.                               ..,...,,,,,,::,::::::::::,,,,,,::::::::,,,:,,,,,