#include<stdio.h>
int check(char str[]){
int flag=0;
char stack[100];int top=-1;//初始化一个栈
for(int i=0;str[i]!='\0';i++){
if(str[i]=='('||str[i]=='{'||str[i]=='[') {
stack[++top]=str[i];
}
else if(str[i]==')'){
if(stack[top]=='('){
top--;
}
else{
flag=1;
break;
}
}
else if(str[i]=='}'){
if(stack[top]=='{'){
top--;
}
else{
flag=1;
break;
}
}
else if(str[i]==']'){
if(stack[top]=='['){
top--;
}
else{
flag=1;
break;
}
}
}
if(flag==0&&top==-1)
return 1;
else return 0;
}
int main(void)
{
char str[100];
while(scanf("%s",str)!=EOF){
if(check(str)==0){
printf("no\n");
}
else{
printf("yes\n");
}
}
return 0;
}