use proconio::input; fn main() { input! { n: usize, } match solve(n) { Some((pp, qq)) => println!( "Yes\n{}\n{}", pp.iter() .map(|p| p.to_string()) .collect::>() .join(" "), qq.iter() .map(|p| p.to_string()) .collect::>() .join(" ") ), None => println!("No"), } } fn solve(n: usize) -> Option<(Vec, Vec)> { if n % 2 == 0 { return None; } let first_term = (n + 3) / 2; let pp = (1..=n / 2).chain(n / 2 + 1..=n).collect::>(); let qq = (0..n).map(|i| first_term + i - pp[i]).collect(); Some((pp, qq)) }