program Hadamard (input, output);

{ (c) 01/10/'97
  Pascal-uitwerking van de NKP'97-opgave "Hadamard"
}

const
   max = 1000;

type
   bucketsort = array[0..max] of integer;
   Hmatrix = record
         rijbucket, kolombucket : bucketsort;
      end;

var
   I, n, run : integer;  { n(globaal) = dimensie van de H-matrices }


procedure leesHadamard (var H : Hmatrix);

type
   tabel = array[1..max] of integer;

var
   rijeen, kolomeen : tabel;
   i, j, getal, aantal : integer;

begin
   with H do begin
      { buckets legen }
      for i := 0 to n do begin
         rijbucket[i] := 0;
         kolombucket[i] := 0;
      end;
      { 1_i (H^t) initialiseren }
      for i := 1 to n do begin
	 kolomeen[i] := 0;
      end;
      { matrix lezen en 1_i (H(t)), rij-bucket bijhouden }
      for i := 1 to n do begin
         aantal := 0;
         for j := 1 to n do begin
	    read(getal);
	    if getal=1 then begin
	       aantal := aantal + 1;
	       kolomeen[j] := kolomeen[j] + 1;
	    end;
	 end;
	 readln;
	 rijeen[j] := aantal;
         rijbucket[aantal] := rijbucket[aantal]+1;
      end;
      { kolom-bucket bepalen }
      for j := 1 to n do begin
	 aantal := kolomeen[j];
	 kolombucket[aantal] := kolombucket[aantal] + 1;
      end;
   end;
end; { leesHadamard }


procedure instantie;
{ werkt een probleem-instantie af }

var
   t : integer;
   H1, H2 : Hmatrix;
   equivalent : boolean;

begin
   readln(n);
   leesHadamard(H1);
   readln;     { lege regel weglezen }
   leesHadamard(H2);
   { buckets matchen }
   t := 0;
   equivalent := true;
   while equivalent and (t<=n) do begin
      equivalent := ((H1.rijbucket[t]=H2.rijbucket[t]) and
                     (H1.kolombucket[t]=H2.kolombucket[t]));
      t := t+1;
   end;
   { buckets gelijk ==> H1 ~ H2 }
   if equivalent then begin
      writeln('equivalent');
   end else begin
      writeln('niet equivalent');
   end;
end; { instantie }


begin
   readln(I);
   for run := 1 to I do begin
      instantie;
   end;
end.