##   ##                                       
 ##  ##         ##   ##              ##   ####    ###  ##  ## 
 ##  ##   ###  ##   ##    ###       ###  ##     ###    ##  ## 
 ##  ##  # ##  ##   ##   ## ##     # ##  ##     ##     ##  ## 
####### ## ##  ##   ##  ##  ##    ## ##   ##   ##     ### ### 
##  ##  ####  ##   ##   ##  ##    #####    ##  ##     ##  ##  
##  ##  ##    ##   ##   ## ##    ##  ##    ##  ###    ##  ##  
##  ##   ###  ##   ##    ###     ##  ## ####    ####  ##  ##