`.,,,,.``                                                                                                    
                                                                                      `.:;';:;';;;;;;;;'';;;,                                                                                           
                                                                              `,:;''''''''''''''''''''''''''''':                                                                                        
                                                                           ,:'''''''''''''''';#,+'''''''''''''''''`                                                                                     
                                                                        .;;''''''''''''''''''++'''':'''''''''''''''',                                                                                   
                                                                      ;';;''''''''''''''+'''''+'''+'+'''''''''''''''+',`                                                                                
                                                                   `'''''''''''''''''''++''''+#''''''''''''''''''''''++',`                                                                              
                                                                 `'''''''''''''''''''''''+#+'++++'#+';+'''''';++++''''++';,`                                                                            
                                                                '+'''''''':''''''''''';+++'''##''''+'';'';+''+''';+''''+++':,`                                                                          
                                                              :+'+'''''''+'+'';+'''';+++''''+++++'##''++'++##++#'+''''''+++';:.``                                                                       
                                                            .'++++''''''+#''+#'';:,'#''''+#@#++#+''''''''''''''''''''''''++++';,`.                                                                      
                                                           ,++++++'''''''''''''++;''''''''''''+'+'''''''''''''''''''''''''++++';,..                                                                     
                                                          ,'+++++''''''+'''''''''''''''''''''++++'''''''''''''''''''''''''''++++':.'                                                                    
                                                         ;:++++++''+''+'+''''''''''''''''''##'@+'''''''+'''''''''''''''''''''+++'':.'                                                                   
                                                        `+'+++++''+''++'''+'''''''''''''''''''+''''''++++'''''''''''''''''''''++++':.'                                                                  
                                                        +'++++++'++++++++++''''''''''''''''''+#''''+++++++''''''''''''''''''''''+++',+;                                                                 
                                                       ++,+++++''+++++++++++++++++''''''''''''+'''''+'''++++'''''''''''''''''''''+++',+;                                                                
                                                      ;++;+++++++++++'+++++++++++++'+++''+'+++''''''''+++++#+++++'''''''''''''''''+++;+':                                                               
                                                     `+++'+++++++++'++++++++'+'+##+'++++++'++++''''++++++++##++++++++''''''''''''''+++:+;,                                                              
                                                     +++'++++++++++++++++'++######:'+++++++++++++++++++++++###++++++++++#+'''''''''''+++';.                                                             
                                                    ++++,++++++++++++++++########,:'+++++++++#'++++++++++++####+++++++++++++##+'''''''+;+';`                                                            
                                                   ;++++.+++++''''+#++++########:::'+++++++++#+++++++++++++#####++++++++++########+''''+#;;:                                                            
                                                  .+++++.+'+'''++++++##########+:::++++++++++#+'+++#+++++++#####++++++++++++###########+.+';:                                                           
                                                  +++++':;;;+#++###############,::;++++++++++#'''##+##+++++######+++++####+#############++;;::                                                          
                                                 ++++++'+#++++################,:::;+++++++++##'';#####+++++#######+++++#################+'+'::'                                                         
                                                ++++++';####++###############;::::;+++++++++##+''+#####++++########+++++#+#########+####+:#+':+;                                                        
                                               ++++++++;###++###############+,::;;;++++++++###';';#####++++#########++++###########++++++;++':#',                                                       
                                              +++++#+';;##++###############+,:::;;;++++++++###''''+#####+++##########++++########+++++++++.#''++;,                                                      
                                             '+++'+++'.'#++################.:::;;;:++++++++###'''''#####+++############+#+#####+++++++++++.:#;#';:,                                                     
                                            '++++''++',+##+###############,:::::;;:+++'++++###'''''+#####++############++++#######++++++++,':'+;;::,                                                    
                                           ;+'+++''#';.+##+##############'::::::;;;++'''+++###'''';;#####++#############+++######++++++++++.#:++;,,',                                                   
                                          ''''+++''+++.###+#############+::::::;;;;++'''+++###''''''+####++##############++##++++++++++++++.#+,+,,.,:.                                                  
                                         ;;'''+++.++'+.###+#############,::::::;;;;+++''+'++##++++';'#####+###############++##++++++'''++++.##+.+,..,,`                                                 
                                        ;';'''''.'+;:+,###+############:::::;;;;;;'++++++''+##+++++''++++#++#################+++++++'''++++'####.+...,.                                                 
                                       ;+'';'';,:;;;;''###+###########+::::;;;;;;''+++++++++##++++++''++++++#################+##++++'''++++++#++'``.....                                                
                                      ;+::,...,;;;;;;'+###+##########+::::;::;;;;;;+++++++++##++++'++'++++++###################+++++'''+++++:##+++'```..                                                
                                     `:.`````;;;;;;;;'+###+##########,:::;;;;;;'';;+++++++++##++++++++++++++###########@#######+#+++'''+++++;###++++,````                                               
                                     .,,,,:';;;;;;;;''+###+#########,::::;;;;;;;';;+++++++++##++++++'+'+++++###################++#++'''++++++#####+++,..`                                               
                                     .,,,,;+;;;;;;;;''####+########'::::;;;;;;;;;;'+++++++++##+#++++''''++++#####################+#+'''++++++#####++++..``                                              
                                     ..,,:;';;:;;;;;'+####+#######+::::;;;;;;;;:'''+++++++++#####+++++''++++######################++'''++++++#####+++:..``                                              
                                     `.,,:'`;:;;;:;;++############,::::;:;;;;;;'''+++++#++++#####+++'''''+++########################+''+++++++####++++:.`                                               
                                     `..,;'.;;;;;;;;'+###########,::::::;;;;;;;'+'+++####+++######++''+'++++######################+#+''+++++++####++++:..`                                              
                                     ...,;'.;;;;;;;;'+#####+####,:::;;:;;'';;;'''''++####+++#######++''''+++########################+''+++++++#####+++`..`                                              
                                     ,...;.:;;;';;;;++#####+###':::;;:;;'';;;''''''+#########@#####+++'''+++########################'+++++++++##+##+++',`                                               
                                     ,...:`;;;;+;;;;#######'###:::;;;;;;';;''+'+'''+########@@#####++'''''++#########################'+++++++++###+++++.`                                               
                                     ,....`;;;;+;;;;+######+##,::;;;;;;;;';'+'+++''############++###++++++++++++##++++++##########++###+++++++++#++++++ `                                               
                                     .....`;;;;+;;;;+######+#,:;;;;;;;;'''++''++''''++++############++++++'+'''''+++++++++++#########++++++++++#+++++++``                                               
                                     ...,,.;;;;';;;;####++++::;;;;;;;''++++''''''++#++++++#########++++++'''++'''''+++++++++######+++++++++++++++#+++++;`                                               
                                     `..:..;;;'';;;;'+++++''''++#######++'''''''++##+++++++#######+'++++'''++'++'++++++'+'+++++++++++++++++++++#++++++++`                                               
                                     `.,:`.;;;';;;;;+''+;;'+'''++++++'''''''''''++++++++++++##+#+++''++'++'++++++++++++++++++++++++++++++#+++++##+++++++`                                               
                                     `,::`,;;;'+;;;;+;;;;'++++''''''''''''''''''++++++++++++++#++++++++++'++++++++++++++++++++++++++++++++#++++######+++`                                               
                                     `;::`:;'++'';;;'#;;'++'+''''''''''''''''+++++++++++++++++++++++++++++++++++++++++++''++########++++++++++########++:`                                              
                                     `;:'`+';;++';;;;#+'++++;;'''''''''''''++++#####++++++++++++++++++++++++++'''''+++++++++#########+++++++++#########++`                                              
                                     .###.+''+++';;;'#############++++''''''''''+++++++++++++++++''++++##+++++++++++#+###################++++###########+`                                              
                                     ;##;,+''+++';;;;+######++##+++##+++++'''''''''+#+######+++++''''+++;###+++++++################@#@@#################'`                                              
                                    :'+#`#+'+++++;;;;'###@#####+++++#++++''''''';''+##+########'''+''+''###+++#####################@@@@@####@###########''.                                             
                                    ;'+#`#+''+++'';;;+########++++++++++++''+''''''+#+++#######+++';''##############@@#########+''+@@@@@@@##############'',                                             
                                    .''@,#+'++++'';;;++#######++#######++++++++++++++'''++#####++';'+###############+''''''''''''''+++++++##+###########''.                                             
                                    .''+@++'+++++';;;+#######:::::;''+++++#########+''''''+####++;'#######@#+';;;''''''''''''''''';'+++++++'''#########+'':                                             
                                    :'''@+++++++'';;'++'####;::::::::::::::::::::::;########+##+;+########;;;;;'''''''''''''''''';;;#++++++''''+#######''''                                             
                                   `+'':#++#'++''';;'''#####;::::::::::::::::::::::;:;'#@#@@#+#++#####+:::;;;+''''''''''''+#####';;;++++++#'''''+######''''                                             
                                   :+''+#++#''''';#'+''####@;:::::::::::::::::::::;::::::;'#@##'####;:::::;:;''''''''''+###@@@@#;;;;;##++##'''''+######''''                                             
                                   ;+''##+++'+'''''++''####';:::+';;::::::::::::'+::;':::#;;;'#+#+:::;'++'++'''''''''+###@@@@@@':;;;;#####+'''''+'####+''''`                                            
                                   ,+''##+++;''''#'+#''####;:::::###++;::::::::'+::;;'''+#'''++:;:++;'';#;:;'+'#''''+#@@@@@@@@#;;;;;;;####+'''''+'''##+'''+;                                            
                                   .+#'@#+++';'####++#+##+#;;:::::#@##+'';:::::+';+:;;'+#;#'''''#+;';;;''';;;'++'''###@@######+';;;;;;@@###+++#++++''+++''#+                                            
                                   '+++@@#+++++#######++#++:::::::'@@@@#+'':::+::+:;:;'+#;#;++'#;+:;;';+;;'+'+#''#########@##'++';;;;;+@####+#######@@++''#+                                            
                                   ++;@@@++++'+'+'''+#+###:::::::::#@@@@@#+':+::::;+';;;+#:;+':#;;'';';+';'#++#'''###@@@@@#@#'+++';;;;;@@####@####@@@@#+++#'`                                           
                                   +#'@@@#++++++##++######:::::::;'@#####@##+::::::;++';;;++:+';';''+;;+'++#@''''++#@##@@@@@@#+++'';;;;@@@##@@@##++###@#+@#+;                                           
                                   '###@@@+##'+'###+#####+::::::;##@#######+;::::::#;'+'''''#+++''+';++#''+'++++#@#+#@@@@@@@@@#+#++'';;'@##@@@@+++++#####@#++                                           
                                   ++@#@@@+##'+++########;:::::;######+#@@@##+;'::::;+'''''++#++@#+++;'+#++#+##@@+#+#++####@@@@@+#+++';;@#@@@+''''''++#@#@#++                                           
                                  `+'##@@#+#+'''+++###@##:::::;####'+@@####@##@@+;;;+''@:'+++#@#'###+#'++#'++##+##+++++++#@@##@@@++++'';@@@#''''''''+++#@@@++`                                          
                                  .+##+@####++''''''###@#::::;###++@@@+####@#####@@'';,;;;'++##@+@@+++#'#@;+++++++++++'#@@@@@@@@#@#+''''+@'''''++##++++#@@@+#,                                          
                                  :#@#+@####'+;';''''@@@':::+##'#@@@@@@@@+@######@@@##+;+;;###@@@@@@@#;#+;#;+++++++++'@@@@@@@@@@@@###''';'''+####++#++++@@@#+'                                          
                                  ''###@###''';''';;;;#@::;+#+@@@@@@@@@@@@@+####@@####:@;;#+####@@@#+#@'###+++++++++#@@@@@@@@@@@@@@@@@#+''#+;;;;'''''''+#@@##+                                          
                                  ''+##@##''''';'''';::;#@+#@@@@@@@@@@@@@@@@@#####@##@@@#@###++@@@@#+#######+++++++@@@@@@@@@@@@@@@@@@@@@@@@#;;;;;;''+''++@@###                                          
                                 .';#:+@##'''+'';;;::::+#@@@@@@@@@@@@@@#@@@@#####@#@@@@#@###@#+#@###@##++####++###@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;'''''+@@##+                                          
                                 ;+;@,'@#+'''':::::::@@@@@@@@@@@@@@@@@@@@@######+#@@@@@@@@@@#@@#+##@#@++++++''+##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#;;;;'''''#@###.                                         
                                 ';;#++@#+'''::::::+@@@@@@@@@@@@@@@@@@@@@@@@@###@##@@@@#@@#@#@@@'@@##@+#+''+####@@@@@@@#@@@@@@@####@@@@@@@@@@@@@#;;;'+'''+@@##+                                         
                                 ';;#@+##'''+:::::@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@++##@@#@@#@@@+@@#+@+++'#####@@@@@@@@@@@@@@@@@####@@@@@@@@@@@@@';;'''''+@@##+                                         
                                 ;''#@###''';;:::+@@@@@@@@@@@@@@@@@###@@@@@@@@@@@@@#@@@@@#+###@@##@#@@@####@@@@@@@@@@@@@@@@@@@#####@@#@@@@@@@@@@@@;;;'#'''@###+                                         
                                 '''#@###+'';;;::#@@@@@@@@@@@@@@##@#####@@##@@@@@@@@@@@@######@@###+@#@#@@@@@@@@@@@@@@@@@@@@#######@#++@@@@@@@@@@@@;;'''''####+                                         
                                 '''+#@+#''+;;;:+@@@@@@@@@@@@@#@@###+++#@@@@+##+#@@@@@@@@#####@@@####@@@@@@@@@@@@@@@@@@@@@@##########''+@@@@@@@@@@@';''#''+###+                                         
                                 ;''++@+#'';;;:;#@@@@@@@@@@@@++##+#+'#+'#@@#######@@#@@@@@####+@@##@#@#@@@@@@@@@@@@@@@@@@@@#######@#@+''#@@@@@@@@@@@;''+'''##++.                                        
                                `;;'''@#+';:;;:+@@@@@@@@@@@@+'++++'##++'@@#@@#@@@@@@@@@@@@#@@###@#+@@@@@@@@@@@@@@@@@@@@@@@#########@#'+++@@@@@@@@@@@';''+''#+++.                                        
                                .;;':;##+'';;:;#@@@@@@@@@@@'+++'+++++++''@@@@@@@@@@@@#@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@#+######+''+#@@@@@@@@@@@;''#''#+''`                                        
                                .;;;;:##+'';;:;@@@@@@@@@@@+++++++++++++''@@@@#@#@@@@@#@@@@@@@@@###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####+'''''@@@@@@@@@@@;'''''#;;;                                         
                                .:::;;#++';:::+@@@@@@@@@@++++++#+++++++#@@@@@@@@@@@@@##@@@@@@@@###@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@##''''''#@@@@@@@@@@+;''#++,,,                                         
                                 ....,#''';:::@@@@@@@@@@+'+++++#+++#+#@@@@@@@@@@@@@@@##@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@+'+'+++@@@@@@@@@@@;''''+`,                                          
                                  ``  +'+';::'@@@@@@@@@@+++++++#+++#@@@@@@@@@@@@@@@@@###@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@###@@@@@@@@@@+'+++@@@@@@@@@@@;'''++                                            
                                      +'';:::#@@@@@@@@@#'+++++++++@@@@@@@@@@@@@@@@@@@###@@@#@@#++##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@++++@@@@@@@@@@+'''#+                                            
                                      +''::::@@@@@@@@@@'+++'++++@@@@@@@@@@@@@@@@@@@@@@###@@##+'':;###'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@@@@@@@@#'@##@                                            
                                      ''':;:;@@@@@@@@@#+++'++#@@@@@@@@@@@@#@@@@@#@@@@@###@@@##+:::;##+'@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@####@                                            
                                      ';+;;;#@@@@@@@@@+++'#@@@@@@@@@@@@@@@#@@@@@@@@@@@###@+##+'::::;##+'@++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+###@                                            
                                      ''##@#@@@@@@@@@#+#@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@######+':::::;;##;++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+#@#@                                            
                                      ''+@@@#@@@@@@@@@+#@@@@@@@@@@@@@@@@@@#+#@@@@@@@@#+##@@@@::;';::;#@@@++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@#@                                            
                                      '''@@@#@@@@@@@@@@@@+'+@@@@@@@@@@@@@@###@@@@@@@@#++@@@@@::+@@+;:;@@@#+#@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@###@##                                            
                                      '''@@@#@@@@@@@@@@@@@@@''#@@@@@@@@@###@@@@@@@@@@#++#@@@#':@@@@#';@@@#+#@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@+##@##                                            
                                      '''#@@#@@@@@@@@@@@@@@@@@+++@@@@@@@@@@@@@@@@@@@@#+##@@@@@@@@@@@;;@@@#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@#                                            
                                      '';#@@#@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@#+##@@@@@@@@@@@;;#@@##+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@#`                                           
                                      ';;##@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+#@@@@@@@@@@@@#;#@@@@+#@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@#+#@@@#`                                           
                                      ';;#@@#@@@@@@@@####@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+@@@@@@#@@@@@@@;#@@@#+@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@#+#@@@#`                                           
                                      ;;;#@@@@@@@@@@@###########@##@@@@@@@@@@@@@@@@@@#+#@@@#@@@@@@@@@;#@@@#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@##@@@@#.                                           
                                     .';;##@@#@@@@@@@########@@#@@@@@@@@@@@@@@@#@@@@#+##@@##@@@@@@@@@;#@@@@#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@+#@@@@#,                                           
                                     :';;#####@@@@@@@@#####@@@@@@@@@@@@@@@@@@@@@@@@@#+##@@#@#@@@@@@@@'#@@@@@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@#'###@@#;                                           
                                     ,';;+####@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@#@@@@#+#@@@##@@@@@@@@@###@@@@++@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@+#@#@@#'                                           
                                     .';;+##@#@@@@@@@@#@@@@@@@@@@@@@@@@##@@@@@@@@@@@#+#@@@#@@@@@@@@@@@#@@###++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@##@#@@#+                                           
                                     ,+'''#@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@#+#@@@##@@@@@#@@@@+###++@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@#@@##                                           
                                     '+'''##@#@@@@@@@@##@@@@@@@@#@@@@@#@@@@@@@@@@@@@#+#@@##@@@@@@#@@@@;@##+'#+#@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@#####@@@#                                           
                                     ++'''####@@@@@@@@@####@@@@#@@@@@##@@@@@@@@@@@@##+@@@@@@@@@@@#@@@@+@+#+#@+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####@@@@@                                           
                                     ++'';#####@@@@@@@@@@@@@@@@#@@@@##@@@@@@@@@@@@@##+#@@@''@@@@##@@@@@::###@+###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+###@@@@####,                                       
                                #+# '++';;#####@@@@@@@@@@@@@##@@@#@##@@@@@@@@@@@@@@#+;#@###'@@@@#@@@@@@::+##@'#+#@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@###@##@@@@####+                                       
                                ++#:++'';;####+@@@@@@@@@@@@#@@@@@@#@@@@@@@@@@@@@@@@#;+@@@;+#@@@@@@@@@@@;::##@#'++#@@@@@@@@@@@@@@@@@@@@@@#@#@@@@@@@@#'+##@@@#####;                                       
                               `+###+'';;;#+####@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@#;;#@@@;'@@@@@@@@@@@@#:;@@@#:++#@@@@@@@@@@@@@@@@@@@@@@@@###@@@@@+++'''@@@#####+                                       
                               `++##+';;;;#'+##+@@@@@#@@@@@@@#@@@@@@@@@@@@@@@@@##@':;#@@@:;@@@@@@@@@@@@@;:;@@@;;++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++++'''+@@#####'                                       
                               `;+##+;;;;;#+'++#@@@@@@@@@@##@@@@@@@@@@@@#@@@@@@###::##@#':'@@@@@@@@@@@@@+;:@@@#;;++#@@@@@@@@@@@@@@@@@@@@##@@@@@#++++';;'+@@#####+                                       
                                ,+##++';;;#++++++@@@@#@#+##@@@@@@@@@@@##@@@@@####:::##@#:'#@@@@@@@@@@@@@@+'#@@#;;+++@@@@@@@@@@@@@#@@@@@##@@@@@++++++';;''@##+###'                                       
                                '+#++###;;;+++++#+@@@#++########@@@@@+####@###@#:::'##@#:#@@@@@@@@@@@@@@@@#;@@#;;;++#@@@@@@@@@@@@@@@#####@@@#+++++''';'''###+##+,                                       
                                '++++#+++'++++####'@@#@########@@@#@''#########':::###@+'#@@@@@@@@@@@@@@@@@+@@##;;;+##@@@@@@@@@@@@#########+++++++''''''++###@#+`                                       
                                ,+#+++;;;'++++++++++@@@@#@########+';;;;:;####+::::####:+#@@@@@@@@@@@@@@@@@#+@##;;;'++@@#@@@@@@@@@@@@@@#####'+++#+''''''++###@##                                        
                                .+#+++';;'+'''++++'+'@@@@@@##+';;;;;;;;::;###+;:::'####'+#@@@@@@@@@@@@@@@@@@#@@#''''++#@##@@@@@@@@@@#########;'#++''''''++###@##                                        
                                 +#++@:;'++';''+''+++;+';;;;;;;;;;;;;:::;;###;::::###@+++@@@@@@@@@@@@@@@@#+##@###;';;+#@################+#@###;;''''''''++##@@#+                                        
                                 +++#@,;++'''''+''++';';;;;;;;;'++;;:::::;##;:::::###@#@#@@@@@@#@@@@@@@@@@@@@@@@#;''''+########+'+#############;;;''''''++##@@@:                                        
                                 +++#@;'+#'''''+'+';'++';;;;;'#+''::';:::+#;;::::'#####@#@@@@@@@@@#@@@@@@@+@@@@###'''''+####+++#+++####+########;;;;+''++++#@@@;                                        
                                 '#+#@@;+#'''+++#;;+++++';'++##++'':::;;:+;;::::;######@@@@@@@@@@@#@@@@@@@+@@#@###''''''+++'''#+'+'+###@########+;;;;'+'+#+#@@@.                                        
                                 :#+#@@:+#+'++##;;#+++++++#+++##+'++:::::;;;:;:;#####+@@@@@@@@@@@@#@@@@@@@##@#@@##@''';;;''''#+'+'''+############;;;;;;++#'##@@                                         
                                 ++##@@''#++##;;;+++++++++++#####++'':::;;;:::'#+####+@@@@@@@@@@@@@@@@@@@@@#@#@@#@@@';;;;'''#+'+'++''+############;;;;;+++;##@@                                         
                                 ;+##@@#+#+++:;;;###+++++++######++'#+::::;::+##+;###+@@@@@@@@@@@@@@@@@@@@@###@@#@@@@;;:;''#+''+++##++##########+++;;;;;+';##@@                                         
                                 .+###@@##+;::::####++++++############+:::::'####'####@@@@@@@@@#@#@@@@@@@@@####@@#@@@@;:;+##++++#################+#';;;;;;;#+@@                                         
                                  +###@@##+::::+#####++++##############+:::;###++####@@@@@@@@@@@@@#@@@@@@@@+####@#@@@@@'+@#++++##@##################;;;;;;##+#@                                         
                                 `'###@@+#;::::#+++++++++##############+;;:###+#######@@@@@@@@@@@@@@@@@@@@@#######@@@@#@@++++###';;;;;;;;'+########+;;;;:####+'                                         
                                  .#####+#::::+##+++++++;::::::::::;;;:::::###+#+++#+''+@@@@@@@@@@@@@@@@@@@##++###+@#@#+##@@#@##+';;;;;;;;'''+#####++;;;;#++++,                                         
                                  `+##@#'#:::;#####++++:::::::::::;':,,:::;#+#+++;##++'+@@@@@@@##@#@@@@@@@@@##+@#########@@@@###''';;;;;;;;;''''#####+';;+###+                                          
                                   +#@@#+#::;+'++###+';:::::::::::'';:::::;##+++;;###'+#@@@@@@@#@@#@@@@@@@@####@@@########@@#@##;''':;;;;;;;;'''''#++++'+###++                                          
                                   '##:##+;,,.;;'+##'':::::::::::;;+';:::::+++';;'###++#@@@@@@@@@#@@@@@@@@@##+@@@###########@@@#;'''';;;;;;;;;''''++++''+###++                                          
                                   ;:;'##+;;;;;';##+'::::::::::;;;;+';:::::'+';;;+###+'#@#@@@@@#@+#@@@@@@@@##+@@@#@#############'''''';;;;;;;;''';;+++''+###+.                                          
                                   :;;'+';;;;;';;#++::::::::::;;;;+++;,,,::;';;;;+####++#@@@@@@##++@@@@@@@##+#@@#########+#+#+##+'''''';;;;;;;;'';;;'+''''###'                                          
                                   ,;;#+;;;;';;;;##;::::::::;:;;++#;';::,,,:;;;;+++####'#@@@@@##++++@@@@@@#++@@@#+#############@@##''''';;;;;;;;';;;;;+''''#+'                                          
                                   ,;;##';'';;;;+#'::::::::''+#+##;;##+#####;;;;++++###+###@@@@+++++#@@@@@#+'@@#########@@@@##@@@@###'''';;;;;;;';;;;;;''''+''                                          
                                   `;+###'+;;;;;##::::::::'++####;:;########;;;'++++####'+#####'+;:++######+#@@#@##@####@@@@#+####@#+##''';;;;;;;;;;;;;'''+'''                                          
                                    ;####+;;;::;#:::::::;++#####;:;:########;;;+++++####:::::;'';:,:++';:::;'@#####@####@@@#@######@#####'';;;;;;';;;;;;;#''';                                          
                                    ;+###+:;:::;;::,,::##+####+:::;:########;;'+++++#';,:,::::::::,,:::::::::'@@+##@####@@###@######@######+++++++;;;;;;;''';:                                          
                                    :+###'::::;'++++;;'+###+++:::;::########;;+++++++##+::,,,:::::,,:,,:::::+@@'++#@@##@@####@#############+++++#++;;;;;;;;;:                                           
                                     '++#;:::;';'+###+###++++;:::;::########;;++++++#+#@+;,,,,,:::::::::::;+@@#########@####+##+####+#######+#++++'+;;;;;;;::                                           
                                     `''+::::;;;'+####+#+++;:;;:::::########;++++++++++#@###::,,:++;:::;'@@#@@+########@@@@@@@@#+++++#######+++++++'';;;;;::                                            
                                      ,''::::';''###++++++::;:::::;:+#######'+++++++++#+#+@@#@',++@;+#@@##'@@++####@@##@@@@@@@@@@@@#'+#######+++#+''+';;;;:.                                            
                                       ;;::;+;;'#+####++;:;::::::#@'++#@@@##+####+++++##+##@#@@#++@#@@###'@@#+'###@@@#+@@@@@@#@@@@@@@#++#####+++###+''';;::                                             
                                       `;::';;'#';###+':;:::;+@@@@@#+'#######''++###++###+#@@#@+++##@###+@#+++##@@@@###@@@@@@#@@@@@@@#++++++##+###++';;';:`                                             
                                        .,;;;';::+##+:;;:;'++#@@@@#+;++#########+''##+###++'@@#+++########+++++@@@####@@@@@@@+#@@@@@@#+++'+'+++++++''';;;.                                              
                                         ,::::::;'':::;;''++##@@@#+++++#####++##++++'+##+'+##@@+++#####'##++++@##@@###@@@@@@@++#@@@@@#++++++@@';;;;;;;;;:                                               
                                          ,,:::,,,,;:;;'''++#@@###++##+####+++##++++';''';;+#@@+++##++#'#++';;####@##@#@@@@@@++##@@@@+++++@@@@;;';;;;;;,                                                
                                           ,,,::,,,#@@+'+'+##@+#+++;##++++++++++;;;+';;;;;;++@#+++##++#@##:,:;;;'#####++';''++'##@@@@+++@@@@@@;;;;;;;;`                                                 
                                            `,,::::+@@@@@@###+#++++'###::''''';;;;++;;;;;####+++++####@@###:;:;;;+#@##+#++#+#+'####@###@@@@@@@';;;;;;                                                   
                                              ,,:::;#@@@@@@@@@+#++++###'++##@+#;;;#';;;;'+#####+++####@#@#@+::;;;''###########'+#####@@@@@@@@+;;;;;:                                                    
                                               .,:::'@@@@@@@@@+++++####+++##+##;;++;;;;'####@##++;:##@@#@##@';;;;;'+########@#''####@@@@@@@@@';;;;,                                                     
                                                `,::'#@@@@@@@##++++####++++#+##;;#+;;;;######@++;++'+#@@@##@@';;;;;+#+#@####@@''+###@@@@@@@@@;;;;`                                                      
                                                  ,:'+@@@@@@@++++++####++++'####'+;;;;'#+###@@#'##+@'#######@#;;;;;+#+#@######+''####+@@@@@@@;;;                                                        
                                                   ,:+@@@@@@@+++++;####++++'###@+';;;;#+###@@@######@#####@##@+';;+#++#@#####@+''####:::#@@@#;:                                                         
                                                   `.+@@@+:::+++++;###++++'####@#';;;'#+#####@@@###@#########@@';+##++#@#####@+'''##+:::::,''`                                                          
                                                    ;;;;;;:::++++';###+++#'###@@'';;;#######@@@#####@@######+#@#'###++#@####@@+#''##':::::.                                                             
                                                    ;;;;;;:::++++;;###+++;+#@#@@++;;'#####@#@@@####@#@@######'@@####+++@#####@+#';##:::::::                                                             
                                                    ;;;;;;:::'+++:;###+++'####@@@+;;##+####@@@#####@##@#+'##+''@@#++++#@@####@+#''##,::::::                                                             
                                                   `;;;;;;::::'++:;###++;'####@#@+;+######+@@@#####@#####;;'#++@@@''+++@####+#+#''##.::::::                                                             
                                                   ,::;;;:,,,:'';:;+#++';'###@###;'#####;;+@@@#####@##@##;;::'++@@'''++####++@++''##.::::::                                                             
                                                   :::::::,,,:+'::;+#++;'+###@##@#+##'#:::'@@######@##@+#;;;:::;+##;'''+###+'##'''+#,::::::`                                                            
                                                   ::::::::,,:+':;;'#+';'####@#######;::::'@#######@###@#;;;;;:'#@#';;''##++''#''''#:::::::.                                                            
                                                   ::::::::,,:';;;;;#+;;'####@####+@@+::::;@@#########@@+;;;;###@@##''''####''#''''#:::::::,                                                            
                                                  `::::::::,,+';;;;;+;;'+##+@##+'#+@@++'::;@###########@@:+#####@@@#+++'######+''''#;;;::::,                                                            
                                                  ,:::::::::,+';;;;;+;;++##'+''++#+@@@###;;###########@@########@@@#+++#######:''''##;;::::,`                                                           
                                                  ::::::::::,+';;;;;;;+'+++:+;'++#'+@@'#++##@#####''@@@@@@@#####@#@##+#+:###+::''''+#;;;::::,                                                           
                                                  ,,:::::::,:+;;;;;''+++'#+:;+#+####@@#+'+@@@@#####@@@@@@@@@###@@#######,##'::++##++#;;;::::,                                                           
                                                 .,,,,,,,::,'';;;;;;,,:'#++:;;+#+####@@'++@@@@@@@@#@@@@@@@@@###@@@@###++'#;;;:+++++++';;::::,                                                           
                                                 ,,,,,,,,,,,+';;;;;;:::::::;;;;+#####@#'+#@@@@@@@@@@@@@@@@@####@@@###++:';;;;##++++++#;;::::,                                                           
                                                 ,,,,,,,,,,,'';;;;;;'::::::;';;;+####@@#++@@@@@@@@@@@@@@@@@####@@@#++++'';;;###+++'''#:::::,,                                                           
                                                 ,,,,,,,,,,,'';;;;;;;':::::;'';;;+####@#'##@@@@@@@@@@@@@@@###+#@@@#+++++';'####++''+'#:::::,.                                                           
                                                 .,,,,,,,,,;';;;;;;;'''';::;''';;;'###@#'##@@@@@@@@#@@@@####++#@@@+++''+;######+++'''#;,::,,`                                                           
                                                 `.,,,,,,,,'';;;;;;'''''''';'''';;;+##@#++###@@@@@#@@@@@###+++#@@#'''''########+++'''#+,,,,,                                                            
                                                 `........,,:;;;;;;''''''';'+'''';;;+###+'+##@@@@#@@@##@##++####@'';'''+#######+++''':,,,,,,                                                            
                                                  ..........,:;;;;;'''''''';+''';;;''###'+###@@@@#@@+##@###+###+@'';;;''#######++++'':,...,,`                                                           
                                                  ............,:;;;'''''''';+'''';''+##++#######@@@'###;########++;';;';########';::,,,......                                                           
                                                  ``............;'''''''''';'''''+''+#####+#####;#####+'########+#'';'''########+';:,,.......                                                           
                                                  `````........,;;''''''''''''''''''+##+++++##';#..##+#+++######+#''''';########::,,,........                                                           
                                                  ````````........'''''''';''''''''+++'+++++++++#@,+##'#########+#''''';+++++++';,...........                                                           
                                                    ``````````....,;;;;;;;'''''''''+''++++++++++#@@+####+######+++''''''+###+';:,,...........`                                                          
                                                         `````````.,;;'''++'''''+'''';++++++++++########'###++'+'+'''''''#+++';,,............`                                                          
                                                             ````````...,:;;;''''''''+++'++++++'+######+'##+++'+#+###++';:,,,.............`..`                                                          
                                                                    ````````.:''''++#''+''''++'+'#####+''++++++++++++';:,..............`.``````                                                         
                                                                         ````,::::::;;;';'''''++'++''#+++##+++';:,,,,,,.........```````````````                                                         
                                                                                  ``````.::,,:''''':;;''':,;';:,,.......```````````````                                                                 
                                                                                       ````......``        ````....``````