###############________________________________________________#__##____________
#######__######________________________________________________#__##____________
#####_____#####____#######__##_#########_#######____#######___#######__###___###
####___##__####___##____##__##____###____##____##__##____###__##_______####__###
###__##__#___##__##_________##____###____##____##_##______##__#######__#####__##
##_##_____##_##__##_________##____###____#######__##______##__#######__##_###_##
####___##__####__###____##__##____###____##__##___###_____##__##_______##__#####
###__#####___##___########__##____###____##___###__########___#######__##___####
##_#########_##______###___________#_____#______#_____###_____#_____#__#________
________________________________________________________________________________