fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse::().unwrap(); let mut result: Vec = vec![]; for i in 1..=n { println!("? {}", n - 1); println!("{}", (1..=n).filter(|j| j != &i).map(|j| j.to_string()).collect::>().join(" ")); let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); match a.trim() { "0" => { result.push(i); }, _ => { }, }; } println!("! {}", result.len()); println!("{}", result.iter().map(|i| i.to_string()).collect::>().join(" ")); std::process::exit(0); }