program b; const MaxN=1002; var MxLen:array[0..MaxN-1,0..MaxN-1] of Integer; I,J,K,N,Kam,Cena,A,B:Integer; begin while True do begin ReadLn(N); if N=0 then Break; for I:=0 to N-1 do for J:=0 to N-1 do if I=J then MxLen[I,J]:=0 else MxLen[I,J]:=-1; for I:=0 to N-1 do begin while not EoLn do begin Read(Kam); if Kam=0 then Break; Read(Cena); MxLen[I,Kam]:=Cena; MxLen[Kam,I]:=Cena; end; ReadLn; end; for K:=0 to N-1 do begin for I:=0 to N-1 do for J:=0 to N-1 do if ((MxLen[I,K]<>-1) and (MxLen[K,J]<>-1)) and ((MxLen[I,J]=-1) or (MxLen[I,J]>MxLen[I,K]+MxLen[K,J])) then begin MxLen[I,J]:=MxLen[I,K]+MxLen[K,J]; end; end; while True do begin ReadLn(A); if A=0 then Break; B:=0; for I:=0 to N-1 do for J:=0 to N-1 do if MxLen[I,J]=A then begin B:=1; break; end; if B=0 then WriteLn('NAY') else WriteLN('AYE'); end; end; end.