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