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