import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//테스트 케이스 개수
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
//한 줄씩 입력 받아와서 char 배열로 변환
char[] word = br.readLine().toCharArray();
//열린 괄호를 담기 위한 스택
Stack<Character> s = new Stack<>();
//for문 중간에 탈출을 했는지 체크할 boolean
boolean value = true;
for (int j = 0; j < word.length; j++) {
if (word[j] == '(') { //만약 열린 괄호라면 스택에 추가
s.add(word[j]);
} else { //닫힌 괄호라면
if (!s.isEmpty()) { //스택이 비어있지 않으면 스택에서 하나 꺼내기
s.pop();
} else { //비어있으면 올바른 문자열이 아니기 때문에 value 값 변경 후 탈출
value = false;
break;
}
}
}
//만약 s가 비어있고, value도 true면 올바른 문자열이라서 YES, 그렇지 않으면 NO 출력
bw.write((s.isEmpty() && value ? "YES" : "NO") + "\n");
}
bw.flush();
bw.close();
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//소수인지를 담을 해시맵
HashMap<Integer, Boolean> decimal = new HashMap<>();
int num = 0;
while ((num = Integer.parseInt(br.readLine())) != 0) {
//소수 조합이 여러 개일 경우 차이가 큰 것을 리턴하는 것이기 때문에 작은 숫자부터 시작
for (int i = 2; i <= num; i++) {
//만약 i가 해시맵에 없으면 소수인지 파악 후 넣기
if (!decimal.containsKey(i)) decimal.put(i, check(i));
//i가 소수가 아니면 넘어가기
if (!decimal.get(i)) continue;
//n은 숫자에서 i를 뺀 숫자
int n = num - i;
//n 역시 해시맵에 없으면 소수인지 파악 후 넣기
if (!decimal.containsKey(n)) decimal.put(n, check(n));
//만약 n도 소수라면 bw에 입력 후 for문 종료
if (decimal.get(n)) {
bw.write(num + " = " + i + " + " + n + "\n");
break;
}
}
}
bw.flush();
bw.close();
}
//소수 파악용 함수
public static boolean check(int num) {
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "";
//br로 한 줄씩 입력 받는 것을 s에 넣고, 문장이 담긴 s가 .이 아닐 때까지 반복
while (!(s = br.readLine()).equals(".")) {
//s를 char 배열로 변환 => String 배열로 변환해도 되지만 시간을 단축시키려면 char을 활용하는 편이 좋음
char[] arr = s.toCharArray();
//여는 괄호를 담을 스택. 닫는 괄호가 나올 때 제일 위에 있는 괄호를 꺼내는 용도
Stack<Character> stack = new Stack<>();
//균형이 맞는지 파악용
boolean check = true;
for (int i = 0; i < arr.length; i++) {
//만약 여는 괄호면 그냥 stack에 담기
if (arr[i] == '(' || arr[i] == '[') stack.add(arr[i]);
//만약 닫는 괄호라면
if (arr[i] == ')' || arr[i] == ']') {
//스택이 비어있지 않고, 닫는 소괄호면 스택 최상위가 여는 소괄호이거나 닫는 대괄호면 스택 최상위가 여는 대괄호라면
if (!stack.isEmpty() && ((arr[i] == ')' && stack.peek() =='(') || (arr[i] == ']' && stack.peek() =='['))) {
//스택 최상위 값 제거
stack.pop();
} else {
//그렇지 않으면 균형이 맞지 않으므로 check에는 false를 담고 for문 끝내기
check = false;
break;
}
}
}
//마지막 확인으로 스택이 비어있지 않으면 균형이 맞지 않기 때문에 확인
if (!stack.isEmpty()) check = false;
//check가 true면 yes를, false면 no를 출력
bw.write((check ? "yes" : "no") + "\n");
}
bw.flush();
bw.close();
}
}