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