use std::collections::HashSet; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut t: Vec = vec![1]; for i in 2.. { if i < n { t.push(t[i - 2] + i); } else { break; } } let set: HashSet = t.iter().cloned().collect(); let mut ans = 3; if set.contains(&n) { println!("{}", 1); return; } for i in 0..set.len() { if set.contains(&(n - t[i])) { ans = 2; } if i > n / 2 { break; } } println!("{}", ans); }