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