########                         #####       ####                    
     ############                       ######      ####                    
    ####       ###                      #######     ####                    
    ####                                ########    ####                    
     ######                             #### ####   ####                    
       #######                          ####  ####  ####              ###   
          ######   ###  ###  ###   ###  ####   #### ####   #######   #######
             ####  ### ###    ### ###   ####    ########  ##     ##   ###   
   ###       ####  ######      #####    ####     #######  #########   ###   
    ############   ### ###      ###     ####      ######  ###         ###   
      ########     ###  ###    ###      ####       #####   #######     #####
                              ###