dddddddd                              dddddddd                                                                                
            d::::::d                              d::::::d                  lllllll                                               lllllll 
            d::::::d                              d::::::d                  l:::::l                                               l:::::l 
            d::::::d                              d::::::d                  l:::::l                                               l:::::l 
            d:::::d                               d:::::d                   l:::::l                                               l:::::l 
    ddddddddd:::::d uuuuuu    uuuuuu      ddddddddd:::::d   aaaaaaaaaaaaa    l::::l   aaaaaaaaaaaaa           ppppp   ppppppppp    l::::l 
  dd::::::::::::::d u::::u    u::::u    dd::::::::::::::d   a::::::::::::a   l::::l   a::::::::::::a          p::::ppp:::::::::p   l::::l 
 d::::::::::::::::d u::::u    u::::u   d::::::::::::::::d   aaaaaaaaa:::::a  l::::l   aaaaaaaaa:::::a         p:::::::::::::::::p  l::::l 
d:::::::ddddd:::::d u::::u    u::::u  d:::::::ddddd:::::d            a::::a  l::::l            a::::a         pp::::::ppppp::::::p l::::l 
d::::::d    d:::::d u::::u    u::::u  d::::::d    d:::::d     aaaaaaa:::::a  l::::l     aaaaaaa:::::a          p:::::p     p:::::p l::::l 
d:::::d     d:::::d u::::u    u::::u  d:::::d     d:::::d   aa::::::::::::a  l::::l   aa::::::::::::a          p:::::p     p:::::p l::::l 
d:::::d     d:::::d u::::u    u::::u  d:::::d     d:::::d  a::::aaaa::::::a  l::::l  a::::aaaa::::::a          p:::::p     p:::::p l::::l 
d:::::d     d:::::d u:::::uuuu:::::u  d:::::d     d:::::d a::::a    a:::::a  l::::l a::::a    a:::::a          p:::::p    p::::::p l::::l 
d::::::ddddd::::::ddu:::::::::::::::uud::::::ddddd::::::dda::::a    a:::::a l::::::la::::a    a:::::a          p:::::ppppp:::::::pl::::::l
 d:::::::::::::::::d u:::::::::::::::u d:::::::::::::::::da:::::aaaa::::::a l::::::la:::::aaaa::::::a  ......  p::::::::::::::::p l::::::l
  d:::::::::ddd::::d  uu::::::::uu:::u  d:::::::::ddd::::d a::::::::::aa:::al::::::l a::::::::::aa:::a .::::.  p::::::::::::::pp  l::::::l
   ddddddddd   ddddd    uuuuuuuu  uuuu   ddddddddd   ddddd  aaaaaaaaaa  aaaallllllll  aaaaaaaaaa  aaaa ......  p::::::pppppppp    llllllll
                                                                                                               p:::::p                    
                                                                                                               p:::::p                    
                                                                                                              p:::::::p                   
                                                                                                              p:::::::p                   
                                                                                                              p:::::::p                   
                                                                                                              ppppppppp