{
TASK:green
LANG:PASCAL
}
program green;
type
  TPoint = record
    X, Y: Integer;
  end;
  TFigList = ^TFig;
  TFig = record
    M: 3..100;
    Sides: array[1..100] of TPoint;
    Next: TFigList;
  end;

var
  MainList, F, Last: TFigList;
  Count: Integer;
  a1, a2, a3: TPoint;

procedure InputData;
var
  N, I: Integer;
begin
  Count := 0;
  Read(N);
  while N <> 0 do
  begin
    New(F);
    F^.M := N;
    for I := 1 to N do
      Read(F^.Sides[I].X, F^.Sides[I].Y);
    F^.Next := nil;
    Last^.Next := F;
    Last := F;
    Count := Count+1;
    Read(N);
  end;
end;

function Count3Side(a, b, c: TPoint): Real;
var
  Px, Py: array[1..3] of Integer;
  P: array[1..3] of TPoint;
  I, k, m: Integer;
  S, S1, S2, S3: Real;
  Min1, Max1: TPoint;
begin
  {Px[1] := a.X;
  Px[2] := b.X;
  Px[3] := c.X;
  for k := 1 to 2 do
  begin
    m := Px[k];
    for I := k to 3 do
    begin
      if Px[I] < Px[k] then
      begin
        Px[I] := Px[I]+Px[k];
        Px[k] := Px[I]-Px[k];
        Px[I] := Px[I]-Px[k];
      end;
    end;
  end;
  Py[1] := a.Y;
  Py[2] := b.Y;
  Py[3] := c.Y;
  for k := 1 to 2 do
  begin
    m := Py[k];
    for I := k to 3 do
    begin
      if Py[I] < Py[k] then
      begin
        Py[I] := Py[I]+Py[k];
        Py[k] := Py[I]-Py[k];
        Py[I] := Py[I]-Py[k];
      end;
    end;
  end;}
  P[1] := a; P[2] := b; P[3] := c;
  Min1 := P[1];
  Max1 := P[1];
  for I := 1 to 3 do
  begin
    if P[I].X < Min1.X then
      Min1.X := P[I].X;
    if P[I].Y < Min1.Y then
      Min1.Y := P[I].Y;
    if P[I].X > Max1.X then
      Max1.X := P[I].X;
    if P[I].Y > Max1.Y then
      Max1.Y := P[I].Y;
  end;

  S := Abs((Max1.X-Min1.X)*(Max1.Y-Min1.Y));
  S1 := Abs((P[1].X-P[2].X)*(P[1].Y-P[2].Y)/2);
  S2 := Abs((P[2].X-P[3].X)*(P[2].Y-P[3].Y)/2);
  S3 := Abs((P[1].X-P[3].X)*(P[1].Y-P[3].Y)/2);
  Count3Side := S-S1-S2-S3;
end;

function CountNSide: Real;
var
  I: Integer;
  b1, b2, b3: TPoint;
  Sum: Real;
begin
  b1 := F^.Sides[1];
  b2 := F^.Sides[2];
  Sum := 0;
  for I := 3 to F^.M do
  begin
    b3 := F^.Sides[I];
    Sum := Sum+Count3Side(b1, b2, b3);
    b2 := b3;
  end;
  CountNSide := Sum;
end;

function FindAll: Integer;
var
  I, mn, cn: Integer;
  min, buf: Real;
begin
  F := MainList^.Next;
  min := CountNSide;
  mn := 1;
  cn := F^.M;
  for I := 2 to Count do
  begin
    F := F^.Next;
    buf := CountNSide;
    if min > buf then
    begin
      min := buf;
      mn := I;
      cn := F^.M;
    end;
    if min = buf then
      if cn > F^.M then
      begin
        min := buf;
        mn := I;
        cn := F^.M;
      end;
  end;
  FindAll := mn;
end;

begin
  New(MainList);
  MainList^.Next := nil;
  Last := MainList;
  InputData;
  WriteLn(FindAll);
  {a1.X := 1; a1.Y := 2;
  a2.X := 3; a2.Y := 4;
  a3.X := 5; a3.Y := 3;
  WriteLn(Count3Side(a1, a2, a3):4:2);
  WriteLn(Count3Side(a2, a1, a3):4:2);
  WriteLn(Count3Side(a3, a2, a1):4:2);}
end.