run2017 :: Int -> Int -> IO ()
run2017 day pbNumber = case day * 10 + pbNumber of
    11 -> Y2017D01.answer1
    12 -> Y2017D01.answer2
    21 -> Y2017D02.answer1
    22 -> Y2017D02.answer2
    31 -> Y2017D03.answer1
    32 -> Y2017D03.answer2
    41 -> Y2017D04.answer1
    42 -> Y2017D04.answer2
    51 -> Y2017D05.answer1
    52 -> Y2017D05.answer2
    61 -> Y2017D06.answer1
    62 -> Y2017D06.answer2
    71 -> Y2017D07.answer1
    72 -> Y2017D07.answer2
    81 -> Y2017D08.answer1
    82 -> Y2017D08.answer2
    91 -> Y2017D09.answer1
    92 -> Y2017D09.answer2
    101 -> Y2017D10.answer1
    102 -> Y2017D10.answer2
    111 -> Y2017D11.answer1
    112 -> Y2017D11.answer2
    121 -> Y2017D12.answer1
    122 -> Y2017D12.answer2
    131 -> Y2017D13.answer1
    132 -> Y2017D13.answer2
    141 -> Y2017D14.answer1
    142 -> Y2017D14.answer2
    151 -> Y2017D15.answer1
    152 -> Y2017D15.answer2
    161 -> Y2017D16.answer1
    162 -> Y2017D16.answer2
    171 -> Y2017D17.answer1
    172 -> Y2017D17.answer2
    181 -> Y2017D18.answer1
    182 -> Y2017D18.answer2
    191 -> Y2017D19.answer1
    192 -> Y2017D19.answer2
    201 -> Y2017D20.answer1
    202 -> Y2017D20.answer2
    211 -> Y2017D21.answer1
    212 -> Y2017D21.answer2
    221 -> Y2017D22.answer1
    222 -> Y2017D22.answer2
    231 -> Y2017D23.answer1
    232 -> Y2017D23.answer2
    241 -> Y2017D24.answer1
    242 -> Y2017D24.answer2
    251 -> Y2017D25.answer1
    _   -> putStrLn "Invalid puzzle number"
run2017 :: Int -> Int -> IO ()
run2017 day pbNumber = case day * 10 + pbNumber of
    11 -> Y2017D01.answer1
    12 -> Y2017D01.answer2
    21 -> Y2017D02.answer1
    22 -> Y2017D02.answer2
    31 -> Y2017D03.answer1
    32 -> Y2017D03.answer2
    41 -> Y2017D04.answer1
    42 -> Y2017D04.answer2
    51 -> Y2017D05.answer1
    52 -> Y2017D05.answer2
    61 -> Y2017D06.answer1
    62 -> Y2017D06.answer2
    71 -> Y2017D07.answer1
    72 -> Y2017D07.answer2
    81 -> Y2017D08.answer1
    82 -> Y2017D08.answer2
    91 -> Y2017D09.answer1
    92 -> Y2017D09.answer2
    101 -> Y2017D10.answer1
    102 -> Y2017D10.answer2
    111 -> Y2017D11.answer1
    112 -> Y2017D11.answer2
    121 -> Y2017D12.answer1
    122 -> Y2017D12.answer2
    131 -> Y2017D13.answer1
    132 -> Y2017D13.answer2
    141 -> Y2017D14.answer1
    142 -> Y2017D14.answer2
    151 -> Y2017D15.answer1
    152 -> Y2017D15.answer2
    161 -> Y2017D16.answer1
    162 -> Y2017D16.answer2
    171 -> Y2017D17.answer1
    172 -> Y2017D17.answer2
    181 -> Y2017D18.answer1
    182 -> Y2017D18.answer2
    191 -> Y2017D19.answer1
    192 -> Y2017D19.answer2
    201 -> Y2017D20.answer1
    202 -> Y2017D20.answer2
    211 -> Y2017D21.answer1
    212 -> Y2017D21.answer2
    221 -> Y2017D22.answer1
    222 -> Y2017D22.answer2
    231 -> Y2017D23.answer1
    232 -> Y2017D23.answer2
    241 -> Y2017D24.answer1
    242 -> Y2017D24.answer2
    251 -> Y2017D25.answer1
    _   -> putStrLn "Invalid puzzle number"
run2017 day pbNumber = case day * 10 + pbNumber of
    11 -> Y2017D01.answer1
    12 -> Y2017D01.answer2
    21 -> Y2017D02.answer1
    22 -> Y2017D02.answer2
    31 -> Y2017D03.answer1
    32 -> Y2017D03.answer2
    41 -> Y2017D04.answer1
    42 -> Y2017D04.answer2
    51 -> Y2017D05.answer1
    52 -> Y2017D05.answer2
    61 -> Y2017D06.answer1
    62 -> Y2017D06.answer2
    71 -> Y2017D07.answer1
    72 -> Y2017D07.answer2
    81 -> Y2017D08.answer1
    82 -> Y2017D08.answer2
    91 -> Y2017D09.answer1
    92 -> Y2017D09.answer2
    101 -> Y2017D10.answer1
    102 -> Y2017D10.answer2
    111 -> Y2017D11.answer1
    112 -> Y2017D11.answer2
    121 -> Y2017D12.answer1
    122 -> Y2017D12.answer2
    131 -> Y2017D13.answer1
    132 -> Y2017D13.answer2
    141 -> Y2017D14.answer1
    142 -> Y2017D14.answer2
    151 -> Y2017D15.answer1
    152 -> Y2017D15.answer2
    161 -> Y2017D16.answer1
    162 -> Y2017D16.answer2
    171 -> Y2017D17.answer1
    172 -> Y2017D17.answer2
    181 -> Y2017D18.answer1
    182 -> Y2017D18.answer2
    191 -> Y2017D19.answer1
    192 -> Y2017D19.answer2
    201 -> Y2017D20.answer1
    202 -> Y2017D20.answer2
    211 -> Y2017D21.answer1
    212 -> Y2017D21.answer2
    221 -> Y2017D22.answer1
    222 -> Y2017D22.answer2
    231 -> Y2017D23.answer1
    232 -> Y2017D23.answer2
    241 -> Y2017D24.answer1
    242 -> Y2017D24.answer2
    251 -> Y2017D25.answer1
    _   -> putStrLn "Invalid puzzle number"