@ .:  .. @ 
                                      @   .   . . :@  @@::.@ 
                                    @@       ..    .    .    .     .:   @  
                                  @ .             ..:::::::::::::::..            | .. .@   @                          
                                @      .:     .:. :::::::::::::::::::::::::::::             . @ 
                              @     :::::    :     .:::: .:::::::::::::::::::::::  ::..:::..  .@ 
                             @    :  :::.   .:::::. ::::::.::::::::::::::::::::::::::::::::::::.@@ 
                           @@.:::  :::::: . ::::::::::..::: :::::::::::::::::::::::::::::::::::::.  :   @@     
                        @@.::::. ::    :: ::....::::::::.:::.:::::::::::::::::::::::::::::::::::::: ::    @    
                     @@::::.. . ...   :: .:.    .::::::: .:::.:::::::::::::::::::::::::::::::::::::: :::::::.  @@@@@@  
                   @::::: .:::...@#$|.: .::::   . .:::::. ::::  :::::::::::::::::::::::::::::::::::::::::::::::::    @@@@@@@@   
                @.:::..::::::. ..@@/::.::::.|#@@@$::::::. ::::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::.  :   @@@@@      
              @.. ..:::::::  .::: .::..::::::@@@@#:::::::. :::::. :::::::::::::::::::::::::::::::::::::::::::::::::::::::..  .:   @@@             
             .:::::::::.... .:::...:..:::::::.|/|::::::::.. :::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  ::@@@      
          @ ::::::::::   . .::::::: .:::::::.:::::::::::. :  ::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:@@
        @@.::::::::::.   .://///|:. .::::::::..::::::::: :    :::::. ::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  .@@@@  
         .::::::::::    :$$$$$$$$.:$$$|..::::::::::::::     :: ::::::  .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|::  :@@@        
      @ .:::::::::     /$$$$$$$.../$$$$$$:.::::::::::::   . ::. :::::.   . :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:@@     
      . ::::::::. @   /$$$$$$$$:/$$$$$$$$$$|.::::::::::   . :::..::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  |@@@
     @.::::::::.@@  @.$$|.:$$/:$$$$$$$$$$$$$$/:::::::::     ::::. :::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.: @ 
    @@:::::::: @    @:$$$$$$$:$$$$$$$//$$$$$$$$$/|:::.:     :::::.:::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.  @ 
    @ ::::::.       @|$$$$$$|$$$$$$$0..0$$$$$$$$$$$$$$/.    :::::::::. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .@ 
    @.:::: @        @.$$$$$:|$$$$$$$$$$$$$$$$$$$$$$$$$0.    :::::.::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.@
     @..@@           @$$$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$0.  : ::::. :.   ::::::::::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::@ 
                      @$$$$./$$$$$$$$$$$$$$$$$$$$$$$$$$.  ..::::.:: .:.  ::::::::::::: ::.:::::::::::::::::::::.:::::::::::::::::::        :::::::::::::::.@ 
                       @:$$.|$$$$$$$$$$$$$$$$$$$$$$$$$.:  ..::::::   :: :.:. ::::::::::. .:::::::::::::::::::::.:::::::::::::::. . .::::::::  .::::::::::::@   
                         @.:.$$$$$$$$$$$$$$$$$//:::$$:.   .:::::: @: :: .:::::::::::::::: :::::::::::::::::::::.::::::::::::: . ..:::::::::::::..::::::::::@     
                            @.|$$$$$$$$$$$$$|.0$$$// . @ .::::.:.@ @|.:: :::::::::::::::: ::::::::::::::::::::..:::::::::::.    .::::::::::::::::.::::::::: @     
                               @@ .:/://:.. @ :|:..| @ @. ::.:..@   @ .::  :::::::::::::: .:::::::::::::::::::..: :::::::. : :.:::::::::::::::::::. ::::::: @ 
                                                       @......@      @.::::  :::::::::::::/.::::::::::::::::::. .::::::::.   .::::::::::::::::::::::  :::::.@      
                                                          ..@         @.:::::    :::::::./:.::::::::::::::::::.::::::::..  . ::::::::::::::::::::::::.  :::.@             
                                                         @              ..:::// :::.:::..//.::::::::::::::::::.:::::::: . . ..:::::::::::::::::::::::: :::: @       
                                                                        @ :::://..:::::.//.::::::::::::::::::.:::::::::   .:::::::::::::::::::::::::::..:::  @     
                                                                         .::: ///:..::.///.::::::::::::::::: .::::::::.. :.:::::::::::::::::::::::::::::::: :.@       
                                                                          .::./////:  ////::::::::::::::::  ::.  ::::  . .:::::::::::::::::::::::::::::::::::. @ 
                                                                           ::.//////:////..::::::::::::: .::. : ::::::::  .:::::::::::::::::::::::::::::::.:: . @ 
                                                                        @..:: //////.//// ::::::::::::: ::::.. .::::::::::. .. .:::::::::::::::::::::::::: :. .@  
                                                                      @  ::.:///////.////.:::::::::::::: .:.. ::::::::::::::..::: :::::::::::::::::::::::.. .@  
                                                                    @ ...:::.///////.////.::::::::...::.. :.  ..:::::::::::::::::::::::::::::.::::::::::. . @@@@@@@@@@@@@@@@@@@@@
                                                                   @.::::::::.//////:////.::::::::::::  ..    :.::::::::::::::::::::::::::  ....:::::::. ::::::::::::::::::::.:  @ 
                                                                   @.:::::::.:///////.////::::::::::::::.   ..  ::::::::::::::::::::::::..::::::::::. .  ......::. ....::::::::::  @ 
                                                                    @ .:::::.//////:|:.///.::::::::::::::: . . :::::::::::::::::::::::..::::::::...: @@@@@@@@@@@@@@@       ..::.    @@@@ 
                                                                     @ ..... .. .|  @  .:/:.:::::::::::::::.  . :.::::::::::::::::::........::  @@@              @ ...:::::::::....:  .:@@ 
                                                                        @@@@@@ @@@     @ .::::::::::::::::@@  @@.  :::::::::::::.. @@  @@                     @.:::::....@@@   @@ :|/||:.@
                                                                                         @  ..   .   .:| @        @|:  ...:  .:  @                         @.::::. @@         @ .|//////...   @@@ 
                                                                                             @@@@@@@@@               @@@@@@@@@                            |:::::: :@@       @ .:|/////////|//||/.@
                                                                                                                                                          |.::::::.  ..::@@      |////||  :::::  @
                                                                                                                                                           @ .  ...::::    .....:  . ::: :: ..|  @
                                                                                                                                                               @@   :.   .. ::||: :::            @ 
                                                                                                                                                                   @ ../|/|     :                  @
                                                                                                                                                               :@.:||////|/////:::                .
                                                                                                                                                              @://////////||//|.:.            .   @
                                                                                                                                                             @:://///||/|/////| .:.. ...:: .     | @
                                                                                                                                                               @@////|:.  .|///|  .:.        @::@ @@
                                                                                                                                                                    @@@@   @@...:...@         @@  @@