#include <stdio.h>

int main(void){
	char line[102];  /* 最大 100 文字 + 改行文字 + ナル文字 */

	char bracket[2][2] = {{'(', ')'}, {'[', ']'}};
	int stack[100];
	int index;

	int i, j;

	while (fgets(line, 102, stdin) != NULL){
		if (line[0] == '.') break;  /* 終了 */

		index = 0;  /* 初期化 */

		/* 判定 */
		for (i = 0; i < 100 && line[i] != '.'; i++){
			/* 2 種類の括弧それぞれについて判定する */
			for (j = 0; j < 2; j++){
				if (line[i] == bracket[j][0]){
					/* 左括弧 */
					stack[index] = j;  /* 現在どの種の括弧の中にいるかをスタックで記憶する */
					index++;
				}else if (line[i] == bracket[j][1]){
					/* 右括弧 */
					index--;
					if (index < 0 || j != stack[index]){
						/* 括弧のバランスが破綻している */
						index = -1;
						break;
					}
				}
			}
			if (j < 2) break;
		}

		/* 出力 */
		if (index == 0){
			printf("yes\n");
		}else{
			printf("no\n");
		}
	}

    return 0;
}