package main import . "fmt" import . "os" import bf "bufio" func main() { rd:=bf.NewReader(Stdin) wr:=bf.NewWriter(Stdout) defer wr.Flush() var q int Fscan(rd,&q) cs := make([]string, 0, q) brkt := make([]int, 0, q) cmpl := 0 bads := 0 for ; q>0; q-- { var cmd, ch string Fscan(rd,&cmd) if cmd == "2" { ch = cs[len(cs)-1] cs = cs[:len(cs)-1] if bads > 0 { bads-- } else if ch == ")" { cmpl-- brkt = append(brkt, 2) } else if p := len(brkt)-1; brkt[p] == 2 { brkt[p] = 1 } else { brkt = brkt[:p] } if len(brkt) > 0 || bads > 0 { Fprintln(wr, "No") } else { Fprintln(wr, "Yes") } continue } Fscan(rd, &ch) cs = append(cs, ch) if bads > 0 { bads++ } else { switch ch { case "(": brkt = append(brkt, 1) case "|": if x := len(brkt); x > 0 && brkt[x-1] == 1 { brkt[x-1] = 2 } else { bads++ } case ")": if x := len(brkt); x > 0 && brkt[x-1] == 2 { brkt = brkt[:x-1] cmpl++ } else { bads++ } } } if len(brkt) > 0 || bads > 0 { Fprintln(wr, "No") } else { Fprintln(wr, "Yes") } } }