use std::io;
use std::io::BufRead;
use std::collections::HashSet;

pub fn main<T: BufRead>(reader: T) -> io::Result<(String, String)> {
    let values: Vec<i64> =
        reader.lines().map(|l| l.unwrap().parse::<i64>().unwrap()).collect();

    let part1 = values.iter().sum::<i64>();

    let mut seen = HashSet::new();
    seen.insert(0);

    let mut res = 0;
    for val in values.iter().cycle() {
        res += val;
        if seen.contains(&res) {
            return Ok((part1.to_string(), res.to_string()));
        } else {
            seen.insert(res);
        }
    }

    Err(io::Error::new(io::ErrorKind::Other, "Invalid input"))
}