# 본인 풀이

#include<bits/stdc++.h>
using namespace std;
int t;
string a;

int main(){

    cin >> t;

    for (int i = 0; i < t;i++){
        stack<char> stk;
        cin >> a;

        for(char ch : a){

            if (!stk.empty() && stk.top() != ch){
                if(stk.top() == ')'){
                    break;
                }
                stk.pop();
            }else{
                stk.push(ch);
            }
        }
        if(stk.empty()){
            cout << "YES"
                 << "\n";
        }else {
            cout << "NO"
                 << "\n";
        }

    }

    return 0;
}
  1. 반례가 있었음 ())(()
  2. 단순히 다른 괄호가 top에 존재한다고 해서 스택 팝을 처리하면 안됨.