use proconio::input; fn main() { input! { n: usize, a: [usize; n] } let m = a.iter().max().unwrap() + 1; let mut dp = vec![0; m]; for &a in a.iter().rev() { let cand = (a..m).step_by(a).skip(1).map(|i| dp[i]).max().unwrap_or(0) + 1; dp[a] = dp[a].max(cand); } let ans = dp.iter().max().unwrap(); println!("{ans}"); }