{
TASK:green
LANG:PASCAL
}

program Green;

type TPoint = record
      X,Y:Integer;
     end;

var Vertexes:array[1..101] of TPoint;
    BestID,ID:LongInt;
    BestM,M:Byte;
    BestS:Real;

function GetDistance(v1,v2:Byte):Real;
var disx,disy:Integer;
begin
 disx := Vertexes[v2].X - Vertexes[v1].X;
 disy := Vertexes[v2].Y - Vertexes[v1].Y;
 GetDistance := Sqrt(Sqr(disx) + Sqr(disy));
end;

function GetTriangleS(v2,v3:Byte):Real;
var a,b,c,p:Real;
begin
 a := GetDistance(1,v2);
 b := GetDistance(v2,v3);
 c := GetDistance(v3,1);
 p := (a + b + c) / 2;
 GetTriangleS := Sqrt(p * (p - a) * (p - b) * (p - c));
end;

function GetPolygonS:Real;
var PolyS:Real;
    pred:Byte;
begin
 PolyS := 0;
 pred := 1;
 repeat

  Inc(pred);
  PolyS := PolyS + GetTriangleS(pred,pred + 1);

 until (pred + 1 = M);
 GetPolygonS := PolyS;
end;

procedure Input;
var NewS:Real;
    iVertex:Byte;
begin
 ID := 0;
 BestID := 0;
 Read(M);
 while (M > 0) do begin
  Inc(ID);

  for iVertex := 1 to M do begin
   Read(Vertexes[iVertex].X);
   Read(Vertexes[iVertex].Y);
  end;
  Readln;

  NewS := GetPolygonS;

  If (ID = 1) or (NewS < BestS) or ((NewS = BestS) and (M < BestM)) then begin
   BestID := ID;
   BestS := NewS;
   BestM := M;
  end;

  Read(M);
 end;
 Readln;
end;

procedure Output;
begin
 Writeln(BestID);
end;

begin
 Input;
 Output;
end.