use std::io::stdin; fn main() { let n = read_int(); let mut p = vec![0; n]; p[0] = n * (n + 1) / 2 - interact(2, n); for i in 1..=n - 2 { p[i] = interact(i, i + 1) - p[i - 1]; } p[n - 1] = n * (n + 1) / 2 - p.iter().sum::(); println!( "! {}", p.iter() .map(|&x| x.to_string()) .collect::>() .join(" ") ); } fn interact(l: usize, r: usize) -> usize { println!("? {} {}", l, r); read_int() } fn read_int() -> usize { let mut buf = String::new(); stdin().read_line(&mut buf).expect("input error!"); buf.trim().parse().unwrap() }