fn main() {
    if let Some(selection) = std::env::args().nth(1) {
        let result = match selection.as_str() {
            "1a" => day_01::part_a(),
            "1b" => day_01::part_b(),
            "2a" => day_02::part_a(),
            "2b" => day_02::part_b(),
            "3a" => day_03::part_a(None),
            "3b" => day_03::part_b(None),
            "4a" => day_04::part_a(None),
            "4b" => day_04::part_b(None),
            "5a" => day_05::part_a(None),
            "5b" => day_05::part_b(None),
            "6a" => day_06::part_a(None),
            "6b" => day_06::part_b(None),
            "7a" => day_07::part_a(None),
            "7b" => day_07::part_b(None),
            "8a" => day_08::part_a(None),
            "8b" => day_08::part_b(None),
            "9a" => day_09::part_a(None),
            "9b" => day_09::part_b(None),
            "10a" => day_10::part_a(None),
            "10b" => day_10::part_b(None),
            "11a" => day_11::part_a(None),
            "11b" => day_11::part_b(None),
            "13a" => day_13::part_a(None),
            "13b" => day_13::part_b(None),
            "14a" => day_14::part_a(None),
            "14b" => day_14::part_b(None),
            "15a" => day_15::part_a(None),
            "15b" => day_15::part_b(None),
            "16a" => day_16::part_a(None),
            "16b" => day_16::part_b(None),
            "17a" => day_17::part_a(None),
            "17b" => day_17::part_b(None),
            "20a" => day_20::part_a(None),
            "20b" => day_20::part_b(None),
            "21a" => day_21::part_a(None),
            "21b" => day_21::part_b(None),
            "22a" => day_22::part_a(None),
            "22b" => day_22::part_b(None),
            "24a" => day_24::part_a(None),
            "24b" => day_24::part_b(None),
            "25a" => day_25::part_a(None),
            "25b" => day_25::part_b(None),
            _ => unimplemented!(),
        };
        println!("{}", result);
    } else {
        println!("Usage: <day><part>, eg `cargo run -- 1a`");
    }
}
