import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
int inputNum = Integer.parseInt(reader.readLine());
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < inputNum; i++) {
// 중간에 삑사리 안나고 잘 진행됫는지에 대한 flag
boolean isSuccess = true;
String[] strArr = reader.readLine().split("");
Stack<String> stack = new Stack<>();
for (int j = 0; j < strArr.length; j++){
if(strArr[j].equals("(")){
stack.push(strArr[j]);
}else if(strArr[j].equals(")")){
// 닫는 괄호가 들어왔는데 isEmpty = true면 isSuccess false하고 break
if(!stack.isEmpty()) {
stack.pop();
}else{
isSuccess = false;
break;
}
}else{
// 여닫는 괄호외 다른 문자가 들어오면 fail 처리
isSuccess = false;
break;
}
}
if(isSuccess && stack.isEmpty()){
sb.append("YES");
}else{
sb.append("NO");
}
sb.append("\n");
}
writer.write(sb.toString());
reader.close();
writer.flush();
writer.close();
}
}