fn getline() -> String { let mut ret = String::new(); std::io::stdin().read_line(&mut ret).unwrap(); ret } fn calc(n: i128) -> i64 { if n >= 26 { return 8; } if n == 8 || n == 9 || n == 10 || n == 15 || n == 16 || n == 22 { return 7; } let n = n as i64; (n / 2) * 2 - 1 } // https://yukicoder.me/problems/no/308 (4) // 実験すると、W=8,N>=26であればクリア可能であること、W<=7のときは有限個のマス目にしか行けないことがわかる。 // - W=8 であれば 1-9-10-18-26-27-28-20-21-22-14-15-16 という経路があり、ここで全ての4以上の偶数に到達できる。 // W=2,4,6のときは1のみ、W=3のときは[1,4]のみ、W=5のときは[1,6]のみ、W=7のときは[1,8,9,10,15,16,22]のみ。 // ここで列挙されていないものについて、以下の様にクリアできる。 // 12: W=11 // 14: W=13 // 18: W=17 // 20: W=19 // 21: W=19 // 24: W=23 // 25: W=23 fn main() { let n = getline().trim().parse::().unwrap(); println!("{}", calc(n)); }