public class Main {
Stack<Character> stack;
// 균형을 이루고 있는지 체크
public boolean chkBalance(String s) {
stack = new Stack<>();
for(int i = 0; i < s.length(); i++) {
char cur = s.charAt(i);
if(cur == '(' || cur =='[') { // 여는 괄호는 스택에 넣어줌
stack.push(cur);
} else if(cur == ')') {
if(stack.isEmpty() || stack.pop() != '(') { // 스택이 비어있거나 짝이 맞지 않는 경우
return false;
}
} else if(cur == ']') {
if(stack.isEmpty() || stack.pop() != '[') {
return false;
}
}
}
if(!stack.isEmpty()) { // 스택 비어있지 않으면 짝 없는 괄호가 있는 것
return false;
}
return true;
}
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true) {
String s = br.readLine();
if(s.equals(".")) { // 점 하나 입력되면 입력 종료
break;
}
if(chkBalance(s)) { // 균형 잡혀있는 경우
sb.append("yes\n");
} else {
sb.append("no\n");
}
}
System.out.println(sb.toString());
}
public static void main(String[] args) throws IOException {
new Main().solution();
}
}