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")) }