...    .... .             .    . .  .
                  .-.     ...                               ^^  
                  ..       ..                               ^   
                  ..     ^  .                ^^                 
                           .                   ^                
                           .^ ^              ..^^               
                  ..     .... .             .    . .      ^^^   
                 .-.     ...                               ^^   
                 ..       ..^^^^^                          ^    
                 ..   ^^^^^.^^^^^^^^        ^^                  
                    ^^^^^^..^^^^/^^^^^^^^^^   ^                 
                  ^^^^^^^^.^^^^^^.^^^^^^^^OO..^^                
                 ^^^^^^^^^^^^^^^^.^^^^^^^^^....^                
               ^^^^^^^^^^^^^^^^^^..^^^^^^^^^^.^^^               
  ^^^^        ^^^^^^^^^^^^^^^^^^^.^^^^^^^^^^^.^^^^              
  ^           ^^...^^^^^^^^^^^^^^^^^^^^/^^^^^.^^^/^^            
             ^^^^....^^^^^^^^^^^^^^^^^^^^^^^^.^^^^^/^           
             ^^^^....^^^^^^^^^^^^^^^^^^^^^^^^^^/^^^^^           
            ^^^^^O..^^^^^^^^^^^^ .^^^^^^^^^^^^^^^^^^^^          
       ^   ^^^^^^^^^^^^^^^^n^^^^...^^^^^^^^^^^^^^^^^^          
          ^^^^^^^^^^^^^^^^^^^^^.....^^/^^^^^^^^^^^^..O         
         ^^^^^^^^^^^^^^^nn^^^^^..^^.^^/^^^^^^^^^^^^/^^/^        
        ^^^^^^/^^^^^^^^/n?n^^^^^^^^^^^/^^^^^^^^^^^^^^^^^^       
       ^^/^^^^^^/^^^^^^^^??^n??xxxx??n?^^^^/^^^^^^^^^^^^^^      
      ^^^^/^^^^^^^^^^^/^^^^nx?nmmn?xxn^^/^.^^^^^^^^^^^^^^     
      ^^^^/^^^^^.^^^^^^^^nxnmmnlmnln?n/^^.^^^^^^^^^^^^/^     
      ^^^^^.^^^^.^^^^^^/n?nnmmyjykllmxn...^^^^^.^^^^^^^^^    
      ^^^^....^....^^^^n?nnmlkynknm^km?^^^^^^^...^^^^^^^/    
     ^^^^^...^^^^^^^^^^?ymm^yj?x??x?xyjlxn^^^^^^\^..^^^^^^^^   
  ^  ^^^^^^...^^^^^/^^^?xnlmkyxyyxyynkmlm??^^^^^^^^\^^^^^^^^^   
     ^^^^^^^...^^^^^ ^^xnn?n??yn?^n??^lmx^^^^^^^^^^^^^^^^^^  ^
     ^^^^^^^^^.^^/^^^^^xn?ym??x??x??yjmx^^^^^^^^^^^^^^^/^^   
     ^^^^^^^^^.^^//^^^^?nklO?xyyxyy?njkm??^^^^^^^^^^^^^^^^^^   
     ^^^^^^^^^^^^^/^^^^n?^ml?n?yn?^n?lmmx?^^^^^^^^^^^^^^^^^^   
     //^^^^^^^^^^^^^^^^^?mmnykm?n?myjmxn^^^^^^^^^^^^^^^^^^   
      ^^^^.......^^^^^^^n?mlkmnyjyjkjlx?^^/^^^^^^^^^^^^//^^   
      ^^^^^^^..^^^^^^^^^^nxnmlkkljklmx?^^^?n^^^^^^^^^^^^^^^^^ 
      ^^^^^^^...^^^^^^^^^^n????mln?y??^^^^^n?^n^^^^/^^^^^^^   
      ^^^^^^^.^^^^^^^^^^^^^^nxxxxxyy?x/^^^^^^?n?^^^^^/^/^^^^^   
       ^^^^^^.^^^^^^^^^^^^^^^^n????nn/^^^^^^^^^n^^^^/^^^^^^^^   
       ^^^^^^^^^^^^^^^^^^n^^^^^^^^^^^^^^^^^n^^n^^^^^^^^^^^^^ ^  
       ^^^^^^^^^^^^^^^^^^^n^^^^^^^^^^^^^^^^^^^^/^^^^^^^^^//^    
      ^^^^^^^^^^/^^^^^^/^^^^^^^n^^^^^^^^^^^^^^^^^^^^^^^^/^^/    
        ^^^^^^^^^^/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    
        ^^^^^^^^^^^^^^.^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    
         ^^^^^^^^^^^^^.^^^^^^^^^^^^^^^^^^^^^^^^^^^/^^^^^^^^^    
         ^^^^/^^^^^^^^.^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     
          ^^^^^^^^^^^^.^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/^^^      
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/^^       
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^         
               ^^^^^^^^^/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^          
                ^^^^^^^^/^^^^^^^^^^^^^^^^^^^^^^^^^^^            
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       ^       
           ^       ^^^^^^^^^^^^^^^^^/^^^^^^^^^^                 
           ^         ^^^^^^/^^^^^^                              
       ^^              ^^^^^^^^^^ =                             
        ^                                                       
  ^      ^                                                  ^  
           ^                                 .      .        ^  
                  .