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