import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;
import std.typecons;

auto readInts() {
	return array(map!(to!int)(readln().strip().split()));
}
auto readInt() {
	return readInts()[0];
}
auto readLongs() {
	return array(map!(to!long)(readln().strip().split()));
}
auto readLong() {
	return readLongs()[0];
}

const real eps = 1e-10;

bool isBalanced(string s) {
	DList!(string) t;
	while(!s.empty) {
		switch(s[0..1]) {
			case "[":
				t ~= "[";
				break;
			case "(":
				t ~= "(";
				break;
			case ")":
				if(!t.empty && t.back == "(") {
					t.removeBack;
					break;
				} else {
					return false;
				}
			case "]":
				if(!t.empty && t.back == "[") {
					t.removeBack;
					break;
				} else {
					return false;
				}
			default:
				break;
		}
		s = s[1..$];
	}
	return t.empty;
}
void main(){
MainLoop:
	while(true) {
		auto s = readln.chomp;
		if(s == ".") {
			return;
		}
		writeln(isBalanced(s) ? "yes": "no");
	}
}