fn main() {
    let k = read::<usize>();
    let zeta = vec![
        0i64,
        0,
        644934_066848,
        202056_903159,
        082323_233711,
        036927_755143,
        017343_061984,
        008349_277381,
        004077_619794,
        002008_392826,
        000994_551278, // 10
        000494_188604,
        000246_086553,
        000122_713347,
        000061_248135,
        000030_588236,
        000015_282259,
        000007_637197,
        000003_817293,
        000001_908212,
        000000_953962, //20
        000000_476932,
        000000_238450,
        000000_119219,
        000000_059608,
    ];
    if k == 3 {
        println!("355065");
        return;
    }
    let mut ans = 0;
    for i in k..zeta.len() {
        ans += zeta[i];
    }
    println!("{}", ans / 1000000);
}

fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}