use proconio::input; fn main() { input! { _n: usize, k: usize, s: String, } let ans = solve(k, s); if let Some(ans) = ans { println!("Yes"); println!("{}", ans); } else { println!("No"); } } fn solve(k: usize, s: String) -> Option { let mut ans = String::new(); let mut eval = 0; let mut i = 0; let mut prev = '$'; for c in s.chars() { match c { '(' => { if prev == ')' { ans.push('+'); } i += 1; } ')' => { if prev == '(' { ans.push('1'); eval += 1; } ans.push('+'); ans.push('1'); eval += 1; i -= 1; } _ => unreachable!(), } ans.push(c); prev = c; (0 <= i).then_some(())?; } (eval <= k).then_some(())?; (i == 0).then_some(())?; while eval < k { ans.push('+'); ans.push('1'); eval += 1; } Some(ans) }