use proconio::input; use std::collections::HashSet; fn main() { input! { n: usize, } if n % 2 == 0 { println!("No"); return; } let mut p = vec![]; let mut p_set = HashSet::new(); let mut q = vec![]; let mut target = (n + 3) / 2; for i in 1..=n / 2 + 1 { if p_set.contains(&i) { p.push(target - i); p_set.insert(target - i); q.push(i); } else { p.push(i); p_set.insert(i); q.push(target - i); } target += 1; if i == n / 2 + 1 { break; } if p_set.contains(&i) { p.push(target - i); p_set.insert(target - i); q.push(i); } else { p.push(i); p_set.insert(i); q.push(target - i); } target += 1; } println!("Yes"); for i in p { print!("{} ", i); } println!(); for i in q { print!("{} ", i); } println!(); }