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