fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); let mut pairdata: Vec = vec![0; n]; let mut leftside: Vec = vec![]; let mut rightside: Vec = vec![]; s.trim().chars().enumerate().for_each(|pair| { if pair.1 == '(' { leftside.push(pair.0); } else { if leftside.is_empty() { rightside.push(pair.0); } else { let leftval = leftside.pop().unwrap(); pairdata[leftval] = pair.0 + 1; pairdata[pair.0] = leftval + 1; } } }); pairdata.iter().for_each(|val| println!("{}", val)); }