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