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