###::::::###:::::::#####::::::###:::::###::::::###
###::::::###:::::#######::::###::::####::::###
#########::###:::::::###:::###:#####:::###
#########::###::::::::###:::############
###::::::###::::###::::###::::::#####::#####
###::::::###::::::######:::::::::####::::####
:::::::####:::::::::#########::::::########
::::::#####::::::::##########::::########
:::::######:::::::###:::::::####:::####::::::::
::::###:::###:::::##########::::########
:::####:####::::########::::::::####::::::::
::##########::###::::::####::::####::::::::
:####::::::####:###:::::::####:::########
:####::::::####:::::::#####:::