package main import ( "bufio" "fmt" "os" "strconv" "strings" ) func main() { scanner := bufio.NewScanner(os.Stdin) scanner.Scan() Q, _ := strconv.Atoi(scanner.Text()) query := make([]string, Q) for i := 0; i < Q; i++ { scanner.Scan() query[i] = scanner.Text() } left, center, right := 0, 0, 0 str := "" if len(query[0]) < 3 || query[0][2] != '(' { for t := 0; t < Q; t++ { fmt.Println("No") } return } for i := 0; i < Q; i++ { if len(query[i]) >= 3 && query[i][0] >= '0' && query[i][0] <= '9' && (query[i][2] == '(' || query[i][2] == '|' || query[i][2] == ')') { str += string(query[i][2]) } else { if len(str) > 0 { str = str[:len(str)-1] } } if len(query[i]) >= 3 { if query[i][2] == '(' { left++ } else if query[i][2] == '|' { center++ } else if query[i][2] == ')' { right++ } } if left == center && center == right { temp := str for strings.Contains(temp, "(|)") { temp = strings.ReplaceAll(temp, "(|)", "") } if temp == "" { fmt.Println("Yes") } else { fmt.Println("No") } } else { fmt.Println("No") } } }