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