____          ____
                          / --.|        |.-- \          School of Computer Science
                         /,---||        ||---.\         University College Dublin
                        //    ||        ||    \\        UCDCS-Student.ucd.ie
                       //     ||        ||     \\
                      // __   ||        ||   __ \\
                     //,'  `. ||        || ,'||`.\\
                    //( \`--|)||        ||( \'|  )\\
                   //  `.-_,' ||________|| `.-_,'  \\
                  //        | ||   _|   ||          \\
                 //         | || | .. | ||           \\
                //          | || | :: | ||            \\
               /    __     888|| |  _ | ||        __    \
              /   ,'|_'. _ 888|| |  | | ||  _   ,'-.`.   \
             /   ( ,-._ | |888|| | -| | || |_| (   |==)   \
            /     `O__,'|_|8@ || | [| | |@ |_|  `._|,'     \
           /            __..|--| | )| | |--|_|__            \           ,==.
          /      __,--''      |  |  | |  |      ``--.__      \         //[]\\
         /    ,::::'          |-=|  | |  |::::..       `-.    \       //||||\\
        /  ,-':::::       ..::|  | /| |  |::::::::        `-.  \     ||,'  `.||
       / ,'    ''       ::::::|  | \| |  |  ''::::     oo    `. \    |--------|
      /,'           ,'\ :::'''|] |  | |  |   ....    o8888o    `.\   |:::_[[[[]
     /'           ,'   )      |> |  | | [|  ::::::     88888  ..  \  |    |   ]
    /           ,'     |      |] |=_| | [|  '::::'oo     8   ::::  \-'    |---|
   .'     o   ,'    \_/       | :| \| |.[|      o8888o        ::;-'      ,'   |
  ,'     o88,'   `._/:\|      | :|  | |: |     88888888      ,-'  \  _,-'     |
  |     8888 ``--'|::::|      |_:|  | |:_|       8888     ,-'   \ ,-'   .::_,-'
 ,'    8888      ''--""      || || [| || ||            ,-'    _,-'   \ _::'
 |                           || |_,--._| ||         ,-'  \ ,-'     _,-'
 |                           |__(______)__|      ,-'   _,-' .::_,-'   |
|'                  88o     =====,,--..=====  .-'   ,-' \  _::'       `|
|                  888888o    ,-'\    /`-.     \ \-' . _,-'            |
`---._____        888888888 ,' / [HHHH[=====-   \ |_::'       _____.---'
  __|_____`=======._____   /   \ [HHHH[=====-    `'__.======='_____|__
 {I |  _______________ || /    /\/____\/\:.  \ || _______________  | I}
 [I |  :___]__[_______ ||(    /   _.._   \:.  )|| ______]___[___:  | I]
 {I_|____________o8o___|| \  /:  /\  /\   \: / ||__________________|_I}
    |_____,------'         \/:'  \ \/ /    \/:..   88`-------._____|
.---'   ::::::              `.   [||||]   ,'  '::..                `---.
|          '::..::        ,'  `-.      ,-'  `.  ':'                    |
|.        .:::''        ,' __    ``--''    __ `.     .::.             ,|
 |        '''         ,' ,'||`.    __    ,'||`. `.    '::::.          |
 |                  ,'  (||||||) ,'||`. (||||||) 88.    '::::.        |
 `.               ,'     `.||,' (||||||) `.||,' 88888.    ':'        ,'
  |             ,'      __       `.||,'       __  88  `.             |
  `.          ,'      ,'||`.       __       ,'||`.      `.          ,'
   `.       ,'       (||||||)    ,'||`.    (||||||)       `.       ,'
     \    ,'          `.||,'    (||||||)    `.||,'          `.    /
      `.  |                      `.||,'                      |  ,'
        `-|                                                  |-'
          `.   ,'.                                    .`.   ,'
            `-:,'o88o ,/                        \.     `.;-'
               `-888 //      /     ||ooo  \ oo88 \\ __,-'   
                    `--..__ /'     ||888  `\ oo8;--'
                           ```-----''-----''''