''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                                                                                                  
                                                                                                                                    
                                                                                                                                    
''                                                  '                                                                               
                                                                                                                                    
                                                                                                                                    
'''                                                                            '      '                                             
                                                                                                                                    
                                                                                                                                    
//'                                         '             '      '''     ''' '                  ''        '                         
                                                                                                                                    
                                                                                                                                    
//'                                         '        ' '''' ''      ''      ' ''''   '' '     ' '''  '  '    ' '     '              
                                                                                                                                    
                                                                                                                                    
//'                                         ''           '  '' ''''''' '''''' '' ''' '''''''''' ''''  ' ''''    ''  ' '    '       '
                                                                                                                                    
                                                                                                                                    
//'                                   '''    '   ''  ' ''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''   ''''' '''    ''
                                                                                                                                    
                                                                                                                                    
//'                                 ' ''     '' '  '''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''  ''''
                                                                                                                                    
                                                                                                                                    
//'                    '             ''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''
                                                                                                                                    
                                                                                                                                    
//'                    ''  '       '  '   ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                                                                                    
                                                                                                                                    
///                   ''''''       '''' '   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                                                                                    
                                                                                                                                    
///                    '''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                                                                                    
                                                                                                                                    
///                ' ' ''''''''''' '''''''''''''''''''''''''''''''////////''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                                                                                    
                                                                                                                                    
///'               ''''''''''''''''''''''''''''''''''''''''''''/XXXXXXXXXXXXX//'''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                   +##+-  -                                                         
                                                                                                                                    
///'          ''' '' '''''''''''''''''''''''''''''''''''''''////XXXXXXXXXXXXXXX////'''/'''''''''''''''''''''''''''''''''''''''''''''
                                                                  +++###++++++                                                      
                                                                                                                                    
///'        '''''''''''''''''''''''''''''''''''''''''''''///XXXXXXXXXXXXXXXXXXXX/////''''/''/'''''''''''''''''''''''''''''''''''''''
                                                              -+++############+-                                                    
                                                                                                                                    
///'        ''''''''''''''''''''''''''''''''''''''''''''///XXXXXXXXXXXXXXXXXXXXXXX/////////'/'///'//''/'//''/''''''''''''/''''''''''
                                                            --+################+                                                    
                                                                                                                                    
X//'      '''''''''''''''''''''''''''''''''''''''''''''//XXXXXXXXXXXXXXXXXXXXXXXXX///////////////'////////////'''/''''''///''''/''''
                                                          --++###############+##-                                                   
                                                                                                                                    
XX/'      '''''''''''''''''''''''''''''''''''''''''''///XXXXXXXXXXXXXXXXXXXXXXXXXXX///////////'////////////////'/'/''/'///'///'/''/'
                                                         -++++++++++++#######+#++-                                                  
                                                                                                                                    
XX/'      '''''''''''''''''''''''''''''''''''''''''////XXXXXXXXXXXXXXXXXXXXXXXXXXXXX////////////////////////////////'///////////////
                                                        ++#++++++++##++#########++-                                                 
                                                                                                                                    
XX/'     '''''''''''''''''''''''''''''''''''''''''/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///////////////////////////////////////////////
                                                       -#######++++++++++++######++                                                 
                                                                                                                                    
XXX'     ''''''''''''''''''/''''''''''''''''''/''/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////////////////////////////////////////////
                                                       +######++--+++-----+######++-                                                
                                                                                                                                    
XXX'     ''''''''''''''''''/'''''''/'''//'''''''/'////XXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXX/////////////////////////////////////////////
                                                       +##@##+--   ----    +######++                                                
                                                          *                                                                         
XXX''    ''''''''''''''''''//'''''''//'/''///''///////XXXX#XXXXXXXXXXXXXXXXXXXX#XXXXXXX/////////////////////////////////////////////
                                                       +##@#++-            -++#@##++-                                               
                                                          *                    *                                                    
XXX'   ''''''''''''''''''''/'/''/'///'/'//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////////////////////////////////////////////
                                                       +####---          ----+#####+--                                              
                                                                                                                                    
XXX/'   '''''''''''''''''''//''/'/'///'///////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////////XX/////X////////////////////////
                                                      -+####-- ---       -----+#####+-                                              
                                                                                                                                    
XXX/' '''''''''''''''''''''///'////''////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////////////////////////////////////////
                                                      -+###+++--+++-  --+++++-+#####++                                              
                                                                                                                                    
XXX/'' '''''''''''''''''''''///////'///////////'///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////////////////////////////////////////
                                                      -+###+---++++-- -+++++---######+-                                             
                                                                                                                                    
XXX/'  ''''''''/'''''''//////////''////////////////XXXXXXXXXXXXXXXXXX/XXXX#XXXXXXXXXXXXXXX//////////////////////////////////////////
                                                     --###+--++##++-   +++@#++-+######-                                             
                                                                          *                                                         
XXX/'''''''''''''''''''''''//'/'///////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/X//////////////////////////////////////
                                                    ---###+-------     ---++---+#####+--                                            
                                                                                                                                    
XXX/' '''''''''''/'''''///'///////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/X//////////////////////////////////////
                                                    --+##+--       -   -  --- -+#####+--                                            
                                                                                                                                    
XXX/''''''''''''/'''''/'///////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///////////////////////////////////////
                                                    ---+++--           -      -+++####--                                            
                                                                                                                                    
XXX/''''''''''/''/'////''//////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////////////////////////////////////
                                                    --+++---      -+-++--     -+++####+--                                           
                                                                                                                                    
XXX/''''''''''/'///'/'////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///XX///////////X/////////////////////
                                                     --+++--       ------     -+++####+--                                           
                                                                                                                                    
XXX/''''''''''////'///'////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///////////XX///////X/////////////
                                                      -+-----          -   ----+++####+-                                            
                                                                                                                                    
XXXX''''''''''/////'//////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXX///XX//////////X/////X/////X/XX///////
                                                    -- -----------++++++------+++###@#+-                                            
                                                                                    *                                               
XXX/''''''''''//'//////////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXX/////////X/X////X/X/X/////XX/X///
                                                       ---#+-----+-----+#+----######@#+---                                          
                                                                                    *                                               
XXX/'''''''''///////////////////////////////////XX//XXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXX/XXX//////////XXX///////////XX/X///XX
                                                       -+###------- - -------+@#+++###++--                                          
                                                                              *                                                     
XXX/''''''''//'////////'//////////////////////X//X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///X/////XXX/X///X/XX/////XX/X/X/
                                                      --+###++------++++----+##+++----+---                                          
                                                                                                                                    
XXXX'''''''''/'//////////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///X//XXX/XX//XX/X//////X///XXX//
                                                    ----++##+++-----------++###+++--- -                                             
                                                                                                                                    
XXX/'''''''''//////////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XX/X/X/XXXXXX/X//XXX/X//XX/XXXX
                                                   ----+++###++++------+++++##+++---                                                
                                                                                                                                    
XXX/'''''''''''//////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XXXXXXXXXX/X/X/XXXXX/X/XXXXXX
  -                                                ----+++###+-+++++++++++++##+-----                                                
                                                                                                                                    
XXX/''''''''/'/////////////////////////////XXXX/XXXXXXXXXXX#XXXXXXXXXXXXXXXX##XXXXXXXXXXXXXXXXXXXXXXXXX/X/XX/XXXXXXX/X/XXXX/X/XXX/XX
                                                    ---+++#@#+-++-++++++++++@@+----                                                 
                                                           *                **                                                      
XXX/''''''''''//////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXX//X/XXXXXXXXXXX/XXX/XXXXXX/XXXX
                                                    ---++###++----++++++++++#@+-                                                    
                                                                             *                                                      
XXX/'''''''''////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXX/XXXXXXXXX
-                                                   ----+##+++---++++++++++++##--                                                   
                                                                                                                                    
XXXX''''''''''/'////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XXXXXX
                                           -         ---##--------+++---++++++#+-                                                   
                                                                                                                                    
XXXX'''''''''////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXX/XXXXXXXX
                                      --- -   -       -+#+-------------------+++--         ---                                      
                                                                                                                                    
XXXX''''''''''////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXX/XXXXXXX/XXXXXXXXXXX
                                      ----------    ---##+--  ----------------+#---       ---- -                                    
                                                                                                                                    
XXXX''''''''''/////////////////////////XXXXXXXXXXXXXXXXX##XXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXX//XXXXXXXXXX
                                        -++-- -  --   -+@@+-  - --------------#@------  --------                                    
                                                        **                     *                                                    
XXXX'''''''/''/////////////////////////XXXXXXXXXXXXXXXXXX##XXXXXXXXXXXXXXXXXX###XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                         -++---     ----#@@#--     ---------#@@@-----+++++++---                                     
                                                         **                  ***                                                    
XXXX''''''''''''////////////////////////XXXXXXXXXXXXXXXXXX##XXXXXXXXXXXXXXX#####XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XX
                                        --++++-    -----##@@##-- -  ------#@@@@@+--++###++++-----                                   
                                                          **               *****                                                    
XXXX'''''''''''////////////////////////XXXXXXXXXXXXXXXXXXX#####XXXXXXXXX####X###XXXXXXXXXXXXXXXXXXXXXXXX//XXXX/XXXXXXXXXXXXXXXXXXXXX
                                        -----++-   -----+#@@@@@+-- ----+@@@@#@@@--++#+++++++++----                                  
                                                          *****         **** ***                                                    
XXXX''''''''/'/////////////////////////XXXXXXXXXXXXXXXXXXX#######XXXX##########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 -                                      ------++-  -----+#@@@@@@@#-+#@@@@@@@@@@#-++++++++++-+++---                                  
                                                          *******    **********                                                     
XXXX''''''''///////////////////////////XXXXXXXXXXXXXXXXXXX#####################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-                                       -------+++  ----+#@@@@@@@@@@@@@@@@@@@@@#-----+-++++++++----                                 
                                                          *********************                                                     
XXXX'''''''''/////////////////////////XXXXXXXXXXXXXXXXXXXX####X############X###XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                       --------+++------++@@@@#@@@@@@@@@@@@#@@@#--------+++++++----                                 
                                                          **** ************ ***                                                     
XXXX'''''''''/////////////////////////XXXXXXXXXXXXXXXXXXXX#####################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-                                      ---------+++------+@@@@@@@@@@@@@@@@@@@@@#--------++++++-----                                 
                                                          *********************                                                     
XXXX'''''/'/'/////////////////////////XXXXXXXXXXXXXXXXXXXX#####X########X######XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
---                                    ----------++-------@@@@@#@@@@@@@@#@@@@@@+ ---  --++++++----                                  
                                                          ***** ******** ******                                                     
XXXX/''''''/'//////////////////////XXXXXXXXXXXXXXXXXXXXXXX#####X###############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 -                                    -- --+------++------@@@@@#@@@@@@@@@@@@@@@+--------++++-++------ -                             
                                                          ***** ***************                                                     
XXXX/''''''/////////////////////////XXXXXXXXXXXXXXXXXXXXXXX####################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                                  --  -------+++------#@@@@@@@@@@@@@@@@@@@@---------+++++++--+--- -                             
                                                           ********************                                                     
XXXX/'''''/////////////////////////XXXXXXXXXXXXXXXXXXXXXXXX#######X#X##########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                                 --------------+------+@@@@@@@#@#@@@@@@@@@@---------#+++++--++-----                             
                                                           ******* * **********                                                     
XXXX///'////////////////////////X///XXXXXXXXXXXXXXXXXXXXXXX#########X##########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                                -----+----------------+@@@@@@@@@#@@@@@@@@@@---------+#++---+++-----                             
                                                           ********* **********                                                     
XXXX//////////////////////////////XXXXXXXXXXXXXXXXXXXXXXXXX##X#################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                                 ------+----++---+----+@@#@@@@@@@@@@@@@@@@@---------##+---++++------                            
                                                           ** *****************                                                     
XXXXX////////////////////X//////XXXXXXXXXXXXXXXXXXXXXXXXXXX################X##XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                                ------------+-++++-----@@@@@@@@@@@@@@@@#@@#---------+++--++++-------                            
                                                           **************** **                                                      
XXXXX/////////////////X/X//XX/X/XXXXXXXXXXXXXXXXXXXXXXXXXXX###################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                                ----+-------++--+++----@@@@@@@@@@@@@@@@@@@#---------++++++++--------                            
                                                           *******************                                                      
XXXXX/////////////////X/XXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXX###################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                               -------++---------++----@@@@@@@@@@@@@@@@@@@+---------##+++++++-+------                           
                                                           *******************                                                      
XXXXX////////////////////X/XXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXX##################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                               ---++++++---------++---+#@@@@@@@@@@@@@@@@@@+-----+---###+++++--+-+-----                          
                                                            ******************                                                      
XXXXX////////////////XXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                               -----++++---------+++--+#@@@@@@@@@@@@@@@@@#--------+-##+++++-----------                          
                                                            *****************                                                       
XXXXX///////////////XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----                               ---+-++++----------++--+#@@@@@@@@@@@@@@@@@#----------###++-------------  -                       
                                                            *****************                                                       
XXXXXX///////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----                              ----++-++---- - ---+++++#@@@@@@@@@@@@@@@@@+----------##+--------------- - -                      
                                                            *****************                                                       
XXXXXX///////////////XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----                             --+++++++++---------++++-#@@@@@@@@@@@@@@@@#+-----+----##+++++++++++----- ---                      
                                                            ****************                                                        
XXXXXX/////////////X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----                             -++-+++++++----------++++#@@@@@@@@@@@@@@@@@+ -----++-++####++++++++-+-------   -                 -
                                                            *****************                                                       
XXXXXX//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----                             -++++---+#+---------+++--#@@@@@@@@@@@@@@@##------++-+-+##++++++++++++-------- --                  
                                                            ***************                                                         
XXXXXX/////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----                             --+++++--++-------------+#@@@@@@@@@@@@@@@@#+------++--++##++##++++++++------ -                  --
                                                            ****************                                                        
XXXXXX//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++---                             -----++++#++------------+#@@@@@@@@@@@@@@@@#+-----+++++++##++++++++++++------ --        -  -      -
                                                            ****************                                                        
XXXXXX//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
------                            --+++++++#+---------++--++@@@@@@@@@@@@@@@@#+-----+++++++##++++++-----------------             ----
                                                            ****************                                                        
XXXXXX/////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
---+--                            -----+--++------+--+-+--++@@@@@@@@@@@@@@@@++----+-++++++#####+++++-+++++---------         --------
                                                            ****************                                                        
XXXXXX//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
---+--                            -+--------------+--------+@@@@@@@@@@@@@@@@++--+-++++++-++####+++++++++++------- -     -  -  ---   
                                                            ****************                                                        
XXXXXXX////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##############X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-+++--                           --++++++++-----+--+--+----+@@@@@@@@@@@@@@#@+----++++++----+##+++++++++++++--------      - ----- - -
                                                            ************** *                                                        
XXXXXX//////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX######X#########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++---                           -------++-------+----++---+@@@@@@#@@@@@@@@@+---+++++++---++++++++++++----+--------       - --- --  
                                                            ****** *********                                                        
XXXXXXX////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++-+-                           -++++++++----------+-++-+-+#@@@@@@@@@@@@@@#-+-++++++++---+++++++++++-----+-------- -    -- --------
                                                             **************                                                         
XXXXXXX///////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++-                           ---+++++--------------+++-+#@@@@@@@@@@@@@@+-+-++++++++----++---++-------++----- -------- -  --- ---
                                                             **************                                                         
XXXXXX/////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++-                          --+--------+++---+-----++--++@@@@@@@@@@@@@@+-++-+++++++----+++++++++++++-++----------      ---------
                                                             **************                                                         
XXXXXX//////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++-                          --++----+--+-+-------+--+-+-+#@@@@@@@@@@@@@+++++++++++++----++----++++++------------    ----  --   -
                                                              *************                                                         
XXXXXXX/////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++-                         ----+++++++++++-----+---+--+++#@@@@@@@@@@@@#++-+---++++++----++----+++++------------------------ ----
                                                              ************                                                          
XXXXXXXX///////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++                       - ---+++++++++++++----+++-+++-+++@@@@@@@@@@@@+----+++++++++++++++-+--++++++--------------------------- 
                                                              ************                                                          
XXXXXXX////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++                          ---------+++++++--++++++++++++@@@@@@@@@@@@++-+++++++++++++++#++-+-++++++++------------ -------------
                                                              ************                                                          
XXXXXXX////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++                          ----  ---+++++++--+++++++++-++@@@@@@@@@@@#+++++++++++-+-+++++++++++++++-++--------------------------
                                                              ***********                                                           
XXXXXXX/////X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                         --+-----+++#+++++++++++++++-++@@@@@@@@@@@#+++++++++---+-+++#+--------+++-++-------------------------
                                                              ***********                                                           
XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                        ---+------++##++++++-+++---++++@@@@@@@@@@@+++++++-++++--+++##++-----++++++++-------------------------
                                                              ***********                                                           
XXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##########XXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++                       - - -++----+++###++++++++++++++++@@@@@@@@@@#++---+-+-+++++++++@#++-+++++++++++-------------------------
                                                              **********                   *                                        
XXXXXXXX///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                       ---++++++++++######+++++++++++++@@@@@@@@@@+++-+-+---++++++++++++++++++++++++++------------------------
                                                              **********                                                            
XXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                       - -+++##++++++########++++++++++@@@@@@@@@@++----+++++++##+++#+++-++++++++++-++-+----------------------
                                                              **********                                                            
XXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXX#########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                       ----+##+--+++++##@##########++++@@@@@@@@@#++-++++++++#+###+##++++++++++++++---------------------------
                                               *              *********                                                             
XXXXXXXX////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##XX#XXXXXXXXXXXX########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                       -----++++++++###@@##@########++++@@@@@@@@#+++++++############+++++++++++++--++-+----------------------
                                              **  *            ********                                                             
XXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX####XXXXXXXX#########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                    --------++++#++++++##+#@@@@#####++#@@@@@@@@@#++++++############++++#+++++++++++++------------------------
                                                  ****        *********                                                             
XXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX####################XXXXXXXXXXXXXX#####XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++-                      -------+++++++-+++###@@@@@@@@@@@@@@@@@@@@#++++++++#####@@@@@#++++++###+#+++++++---+--------------------
                                                  ********************              *****                                           
XXXXXXXX/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX######################XXXXXXXX#########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++                    -- ----------++++++++##@@@@@@@@@@@@@@@@@@@@@@####+###@@@@@@@@@#+++++++++###+++++-------------------------
                                                  **********************        *********                                           
XXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#######################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++                      -----------++#+++++##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###++++++++++++++++------------------------
                                                  ***************************************                                           
XXXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX######################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++                     - ----------++#+++#+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##++++++++++++++++++------------------------
                                                  **************************************                                            
XXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#####################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++                     -- -- -------+#+++#+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++++++#####++++++--------------------------
                                                   *************************************                                            
XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#####################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                   -  ------------#+++#++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++++++++##++++++-++------------------------
                                                   *************************************                                            
XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#####################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                   ---- ---------++#+++++#+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++#+--++####++++-++-------------------------
                                                   *************************************                                            
XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX####################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                  ---   ----------++##++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++#+--++++#+++++++-------------------------+
                                                   ************************************                                             
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                -     - ------------+#+++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++#++++++##+++++++------------------------++
                                                    ***********************************                                             
XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                      -------------+-+#++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+##++++####+++++++++---------------------++-+
                                                    **********************************                                              
XXXXXXXXXX/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                      ---------------++#++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+###++#####++++++-+---------------------+++--
                                                    **********************************                                              
XXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                   - -----------------+##+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###+++####+++-+-+------+-+++---------+++++++++
                                                    **********************************                                              
XXXXXXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                   --------------------+##++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##++#+####+++++++----+----------+++++++++++---
                                                     *********************************                                              
XXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                    - - --------------+++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###+#+###++++++++++----+---+++++++++++-+-+-+--
                                                     *********************************                                              
XXXXXXXXXX///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+++++++-                      ----------------+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######+##+++++++++-++--++++++++++--++------++++
                                                      *******************************                                               
XXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++++-                     -  -------------+-++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########++++++++++++++++++++-----------+++++-++
                                                      *******************************                                               
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++++-  -              -  - - ----------------+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####++++++++++++++++++++++-+----+--+---+++++-+++
                                                      ******************************                                                
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++++-   --    -    -   --- -----------------++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####+++++++++++++++++++-+---+--+++-+++++++-+++++
                                                       *****************************                                                
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++++-      ------     - - -------------------++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##+++++++++++++++++++++-+-++--+++++++-++++++++++
                                                       *****************************                                                
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++++-   --  -  -- -  -  --------------------+++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###+++++++++++++++--++-+-+-+++++++++++++++++-+++
                                                       *****************************                                                
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
++++++++-        --- -------------------------+++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@###++++++++++++++-+++++++++++++++++++++-+++++++#
                                                        ****************************                                                
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
+###++++-      --------- ----------------------++++-++++@@@@@@@@@@@@@@@@@@@@@@@@@@@###+++++++++++++-+-++++++++++++++++++++++++++++#@
                                                        ***************************                                                *
XXX##XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##
###@@#++-         -----------------------------+++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@#+##++++++++++++++++++++++++++++++++++++++++++#@@
   **                                                   ***************************                                               **
##X###XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX####
@@#@@@##-          ---------------------------++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@###++++++++++++++-+++-++-++++++++++++++++++++@@@@
** ***                                                  ***************************                                             ****
XXXX###XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#####
####@@@#-              -------------------------++-+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@###++++++++++++++++++-+-++-+++++++++-++++-++@@@@@
    ***                                                 ***************************                                            *****
XXXX###XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#####
####@@@#-               ------------------+---+-++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@####+++++++++++++++++++++++++++++++++++++++#@@@@@
    ***                                                 ***************************                                            *****
XXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX######
######@#--                 --------------+++-++---++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@###+++++++++++++++++++++++++++++++++++++++#@@@@@@
      *                                                  **************************                                           ******
XXXXXX##XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX######
######@@+      -  -          -------+-+++++++++-++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@###++++++++++++-+++++-++++++++++++++++++++@@@@@@
      **                                                 ***************************                                          ******
XXXXXX##XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX######
######@@+-        --        -----------+-+----++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@##++++++++++++++++++++++++++-++++++++++###@@@@@@
      **                                                 ***************************                                          ******
XXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###########################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX###############
#######@+-        ------   - ----------++-++-+++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@##+++++++++++++++++++++++--+++++#@@@@@@@@@@@@@@@
       *                                                 ***************************                                 ***************
XXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX################
#######@+-      - ----------------------++--+-++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@###++++++++++++++++++++-++++++++@@@@@@@@@@@@@@@@
       *                                                ****************************                                ****************
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##############X#############XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################
########+-      --------------------------++++++++++++++@@@@@@@@@@@@@@#@@@@@@@@@@@@@##+++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@
                                                        ************** *************                               *****************
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX############################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##################
#########+-  -- -------------------------+++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@###+#+++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@
                                                        ****************************                              ******************
########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############################XXXXXXXXXXXXXXXXXXXXXXXXXXXX###################
@@@@@@@@#+------------+-++++++-++-----++++++++++++++++##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########++++++++++++++##+#@@@@@@@@@@@@@@@@@@@
********                                                *****************************                            *******************

TINA