program paradox;
var n, i, j, count:integer;
S: array[1..325] of string;
A,B,SY: array [1..325] of char;
lettere : array[1..26,1..26] of boolean;
visited : array [1..26] of boolean;
risposta: string;
ciclo : boolean;
procedure DFS(u: Integer);
var v: Integer;
begin
visited[u]:=True; write (u, ' ');
for v:=1 to 26 do if ciclo=false then begin if (lettere[u,v] = true) and (not visited[v]) then begin writeln (v);DFS(v); end
else if (lettere[u,v] = true) and (visited[v] = true) then ciclo:=true; end
else exit;
writeln(ciclo);
end;
begin
readln(N);
for i:=1 to N do readln(S[i]);
for i:=1 to N do begin A[i]:=S[i][1]; SY[i]:=S[i][3]; B[i]:=S[i][5];end;
for i:=1 to 26 do
for j:=1 to 26 do lettere[i, j]:=false;
for i:=1 to 26 do visited[i]:=false;
ciclo := false;
for i:=1 to N do
begin
if SY[i]='<' then lettere[ord(A[i])-96, ord(B[i])-96] := true
else if SY[i]='>' then lettere[ord(B[i])-96, ord(A[i])-96] :=true;
end;
DFS(1);
if ciclo=true then risposta:=':('
else risposta:=':)';
writeln(risposta);
end.
begin if SY[i]='<' then lettere[ord(A[i])-96]:=lettere[ord(A[i])-96]+1
else lettere[ord(B[i])-96]:=lettere[ord(B[i])-96]+1; end;
risposta:=':('; count:=0;
for i:=1 to 26 do if lettere[i]=0 then count:=count+1;
for i:=1 to 26 do if (lettere[i]<=2) and (26-count<=N-1) then risposta:=':)';
writeln(risposta);
end.
procedure DFS(u: Integer);
var v: Integer;
begin
visited[u]:=True; writeln(u);
for v:=1 to n do if adj[u,v] and (not visited[v]) then DFS(v);
end;
begin
(* your code goes here *)
end.
cHJvZ3JhbSBwYXJhZG94Owp2YXIgbiwgaSwgaiwgY291bnQ6aW50ZWdlcjsKICAgIFM6IGFycmF5WzEuLjMyNV0gb2Ygc3RyaW5nOwogICAgQSxCLFNZOiBhcnJheSBbMS4uMzI1XSBvZiBjaGFyOwogICAgbGV0dGVyZSA6IGFycmF5WzEuLjI2LDEuLjI2XSBvZiBib29sZWFuOwogICAgdmlzaXRlZCA6IGFycmF5IFsxLi4yNl0gb2YgYm9vbGVhbjsKICAgIHJpc3Bvc3RhOiBzdHJpbmc7CiAgICBjaWNsbyA6IGJvb2xlYW47Cgpwcm9jZWR1cmUgREZTKHU6IEludGVnZXIpOwp2YXIgdjogSW50ZWdlcjsKYmVnaW4KICB2aXNpdGVkW3VdOj1UcnVlOyAgd3JpdGUgKHUsICcgJyk7CiAgZm9yIHY6PTEgdG8gMjYgZG8gaWYgY2ljbG89ZmFsc2UgdGhlbiBiZWdpbiAgaWYgKGxldHRlcmVbdSx2XSA9IHRydWUpIGFuZCAobm90IHZpc2l0ZWRbdl0pIHRoZW4gYmVnaW4gd3JpdGVsbiAodik7REZTKHYpOyBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxldHRlcmVbdSx2XSA9IHRydWUpIGFuZCAodmlzaXRlZFt2XSA9IHRydWUpIHRoZW4gY2ljbG86PXRydWU7IGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZXhpdDsgICAgICAgIAp3cml0ZWxuKGNpY2xvKTsgCmVuZDsKICAgIApiZWdpbgogICAgcmVhZGxuKE4pOwogICAgZm9yIGk6PTEgdG8gIE4gIGRvIHJlYWRsbihTW2ldKTsKICAgIGZvciBpOj0xIHRvIE4gZG8gYmVnaW4gQVtpXTo9U1tpXVsxXTsgU1lbaV06PVNbaV1bM107IEJbaV06PVNbaV1bNV07ZW5kOwogICAgZm9yIGk6PTEgdG8gMjYgZG8gCiAgICAgICAgICAgICAgICAgZm9yIGo6PTEgdG8gMjYgZG8gbGV0dGVyZVtpLCBqXTo9ZmFsc2U7CiAgICBmb3IgaTo9MSB0byAyNiBkbyB2aXNpdGVkW2ldOj1mYWxzZTsKICAgIGNpY2xvIDo9IGZhbHNlOwogICAgZm9yIGk6PTEgdG8gTiBkbyAKICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgaWYgU1lbaV09JzwnIHRoZW4gbGV0dGVyZVtvcmQoQVtpXSktOTYsIG9yZChCW2ldKS05Nl0gIDo9IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIFNZW2ldPSc+JyB0aGVuIGxldHRlcmVbb3JkKEJbaV0pLTk2LCBvcmQoQVtpXSktOTZdIDo9dHJ1ZTsKICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICBERlMoMSk7CiAgICBpZiBjaWNsbz10cnVlIHRoZW4gcmlzcG9zdGE6PSc6KCcKICAgICAgICAgICAgICAgICAgZWxzZSByaXNwb3N0YTo9JzopJzsKICAgIHdyaXRlbG4ocmlzcG9zdGEpOwogICAgZW5kLiAgICAgICAgICAgICAKICAgIGJlZ2luIGlmIFNZW2ldPSc8JyB0aGVuIGxldHRlcmVbb3JkKEFbaV0pLTk2XTo9bGV0dGVyZVtvcmQoQVtpXSktOTZdKzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbGV0dGVyZVtvcmQoQltpXSktOTZdOj1sZXR0ZXJlW29yZChCW2ldKS05Nl0rMTsgZW5kOwogICAgcmlzcG9zdGE6PSc6KCc7IGNvdW50Oj0wOwogICAgZm9yIGk6PTEgdG8gMjYgZG8gaWYgbGV0dGVyZVtpXT0wIHRoZW4gY291bnQ6PWNvdW50KzE7CiAgICBmb3IgaTo9MSB0byAyNiBkbyBpZiAobGV0dGVyZVtpXTw9MikgYW5kICgyNi1jb3VudDw9Ti0xKSB0aGVuIHJpc3Bvc3RhOj0nOiknOyAgIAogICAgd3JpdGVsbihyaXNwb3N0YSk7CmVuZC4KCgoKCnByb2NlZHVyZSBERlModTogSW50ZWdlcik7CnZhciB2OiBJbnRlZ2VyOwpiZWdpbgogIHZpc2l0ZWRbdV06PVRydWU7IHdyaXRlbG4odSk7CiAgZm9yIHY6PTEgdG8gbiBkbyBpZiBhZGpbdSx2XSBhbmQgKG5vdCB2aXNpdGVkW3ZdKSB0aGVuIERGUyh2KTsKZW5kOwoKYmVnaW4KCSgqIHlvdXIgY29kZSBnb2VzIGhlcmUgKikKZW5kLg==