38 lines
817 B
ObjectPascal
38 lines
817 B
ObjectPascal
var
|
|
i,j,top,l,m,n:integer;
|
|
a,b:array[0..1000]of integer;
|
|
bo:boolean;
|
|
s:string;
|
|
|
|
begin
|
|
assign(input,'strs.in'); reset(input);
|
|
assign(output,'strs.out'); rewrite(output);
|
|
readln(n);
|
|
for i:=1 to n do
|
|
begin
|
|
readln(s); bo:=true;
|
|
for j:=1 to length(s) do
|
|
case s[j] of
|
|
'{':a[j]:=1;
|
|
'[':a[j]:=2;
|
|
'(':a[j]:=3;
|
|
'<':a[j]:=4;
|
|
'>':a[j]:=5;
|
|
')':a[j]:=6;
|
|
']':a[j]:=7;
|
|
'}':a[j]:=8;
|
|
end;
|
|
top:=0;b[top]:=0;
|
|
for j:=1 to length(s) do
|
|
begin
|
|
if (a[j]<5) and (a[j]>=b[top]) then begin top:=top+1; b[top]:=a[j]; end;
|
|
if (a[j]>=5) then
|
|
if (a[j]+b[top]<>9) then bo:=false
|
|
else top:=top-1;
|
|
end;
|
|
if (top=0) and (bo) then writeln('YES')
|
|
else writeln('NO');
|
|
end;
|
|
close(input); close(output);
|
|
end.
|