package main import ( "bufio" "fmt" "os" ) type Node struct { c byte p *Node n int } func main() { sc := bufio.NewScanner(os.Stdin) sc.Split(bufio.ScanWords) out := bufio.NewWriter(os.Stdout) defer out.Flush() var q, cur int fmt.Scan(&q) st := make([]*Node, q+1) for i := 0; i < q; i++ { sc.Scan() if sc.Text() == "1" { sc.Scan() c := sc.Text()[0] prev := st[cur] now := &Node{c, prev, 1} if prev != nil { now.n = prev.n + 1 } if c == ')' && now.n >= 3 && now.p.c == '|' && now.p.p.c == '(' { now = now.p.p.p } cur++ st[cur] = now } else { cur-- } if st[cur] == nil { out.WriteString("Yes\n") } else { out.WriteString("No\n") } } }