{
TASK:green
LANG:PASCAL
}

type
point=record
x,y:longint;
end;

const
max=2147483647;
min=-2147483647;

var
imaxx,iminx,minx,miny,maxx,maxy,num:longint;
maxs:real;
a:array[1..200]of point;
sq:array[1..200]of real;
polygons:integer;
br:longint;

procedure get(m:integer);
var
i:integer;
begin
minx:=max;miny:=max;maxx:=min;maxy:=min;
for i:=1 to m do
begin
if a[i].x<minx
then begin minx:=a[i].x;iminx:=i;end;
if a[i].x>maxx
then begin maxx:=a[i].x;imaxx:=i;end;
if a[i].y<miny
then miny:=a[i].y;
if a[i].y>maxy
then maxy:=a[i].y;
end;
end;


procedure square(m:integer);
var i:integer;
begin
for i:=1 to m-1 do
    sq[i]:=((abs(a[i].y-miny)+abs(a[i+1].y-miny))/2)*abs(a[i].x-a[i+1].x);
    sq[m]:=((abs(a[m].y-miny)+abs(a[1].y-miny))/2)*abs(a[m].x-a[1].x);
end;

function lice(m:integer):real;
var
i,j:integer;
s1,s2:real;
begin
j:=0;
s1:=0;
while j<=abs(imaxx-iminx)-1 do
      begin
      i:=iminx+j;
      if i>m then i:=i-m;
         s1:=s1+sq[i];
      j:=j+1;
      end;
j:=0;
s2:=0;
while j<=m-(imaxx-iminx)-1 do
      begin
      i:=imaxx+j;
      if i>m then i:=i-m;
      s2:=s2+sq[i];
      j:=j+1;
      end;
lice:=s1-s2;
end;

procedure check;
var m,i:integer;
s:real;
begin
i:=0;
while m>0 do
begin
inc(br);
read(m);
for i:=1 to m do begin read(a[i].x);read(a[i].y);end;
get(m);
if m>0
then begin
     square(m);
     s:=lice(m);
     if s<maxs
     then begin
          maxs:=s;
          polygons:=m;
          num:=br;
          end
     else if s=maxs
          then if polygons>m
               then begin
                    maxs:=s;
                    polygons:=m;
                    num:=br;
                    end;
     end;
end;
end;

begin
maxs:=max;
polygons:=0;
num:=0;
check;
writeln(num);
end.