uses crt;
const
     n=4;
     m=5;
type
    TElem=integer;
   TMx=array[1..n,1..m] of TElem;
var
   Mx:TMx;
   p,q:integer;
{vernet true esli stroki p i q matrici mx poxoji}
function CompareRows(const p,q:integer;
         const mx:TMx):boolean;
var
   i,j:integer;
begin
     i:=1;
     while (i<=m) do
           begin
           j:=1;
           while (j<=m) and not (mx[p,i]=mx[q,i]) do inc(j);
           if (j<=m) then inc(i) else i:=m+2;
           end;
     CompareRows:=(i=m+1);
end;
{postro4nii vvod matrici }
 Procedure ReadMatr(var A:TMx; var n1,m1:word);
 var
    i,j:word;
 begin
 REPEAT
 write('vvedite koli4estvo strok: ');
 readln(n1);
 until(n1>0) and (n1<=n);
 repeat
 write('vvedite koli4estvo stolbcov: ');
 readln(m1);
 until (m1>0) and (m1<=m);
 for i:=1 to n1 do
     begin
    for j:=1 to m1 do
        begin
        write('a[',i,',',j,']=');
        readln(a[i,j]);
        writeln;
        end;
    end;
 end;

{postro4nii vivod matrici}
Procedure PrintMatr(a:TMx; n1,m1:word);
  var
    i,j:word;
    begin
     for i:=1 to n1 do
    begin
    for j:=1 to m1 do
    write(A[i,j],' ');
    writeln;
    end;
end;

var
   nn,mm:word;
   a:TMx;

begin
clrscr;
randomize;
  Readmatr(a,nn,mm);
  Printmatr(a,nn,mm);
   for p:=1 to n-1 do
           for q:=p+1 to n do
               if CompareRows(p,q,Mx) then writeln(p, ':', q);
readkey;
end.