use itertools::Itertools; use proconio::input_interactive; fn main() { input_interactive! { n:usize, } let mut t = vec![b'a'; n]; for i in 0..n { let mut cnts = vec![0; 25]; for j in 0..25 { t[i] = b'a' + j as u8; println!("? {}", t.iter().map(|ti| *ti as char).join(" ")); input_interactive! { m:usize, } cnts[j] = m; } let sorted = (0..25).sorted_by_key(|&i| cnts[i]).collect::>(); if cnts[sorted[24]] != cnts[sorted[23]] { t[i] = b'a' + sorted[24] as u8; } else { t[i] = b'z'; } } println!("! {}", t.iter().map(|ti| *ti as char).join(" ")); }