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