__######__#######_######__########_######__##___##_######__#######
_##_______##______##___##____##____##___##_##___##_##___##_##_____
_##__###__#####___##___##____##____##___##_##___##_##___##_#####__
_##____##_##______######_____##____######__##___##_##___##_##_____
_##____##_##______##___##____##____##___##_##___##_##___##_##_____
__######__#######_##___##____##____##___##__#####__######__#######