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.