{
TASK: sym
LANG: PASCAL
}
const
 maxn = 10001;
 big  = 10001;
type
 cord = record x , y : longint; end;
 cell = record v , i , ptr : longint; end;
var
 a : array[0..maxn] of cord;
 p : array[0..maxn] of longint;
 s : array[0..maxn] of cell;
 h  : array[-big..big] of longint;
 i,n,sbr,j,k,cur : longint;
 vl , fl : boolean;
 a1 , b1, c1,c2,xm,ym,x1,y1,x,y,o  : double;
 m , xi , yi,max : longint;
procedure init;
var f : text;
begin
   assign(f,'');
   reset(f);
   readln(f,n);
   for i:=1 to n do
   readln(f,a[i].x,a[i].y);
end;
procedure hh;
begin
   for i:=1 to n do
   begin
      inc(sbr);
      s[sbr].v:=a[i].y;
      s[sbr].i:=i;
      s[sbr].ptr:=h[a[i].x];
      h[a[i].x]:=sbr;
   end;
end;
procedure main;
begin
   if n<200 then max:=n
   else max:=25;
   for i:=1 to n-1 do
   begin
    for j:=n downto i+1 do
    begin
       a1:=-(a[j].x-a[i].x);
       b1:=a[i].y-a[j].y;;
       xm:=(a[i].x+a[j].x)/2;
       ym:=(a[i].y+a[j].y)/2;
       c1:=-a1*xm-b1*ym;
       fl:=true;

       for k:=1 to max do
       begin
          if n>200 then
             m:=((k*131313) mod n)+1
          else m:=k;
          x1:=a[m].x;
          y1:=a[m].y;
          if a1*x1+b1*y1+c1<>0 then
          begin
             c2:=-a1*y1+b1*x1;
             x:=(-a1*a1*x1-b1*a1*y1-2*a1*c1+c2*b1)/(sqr(a1)+sqr(b1));
             y:=(b1*x+c2)/a1;
             xi:=round(int(x));
             yi:=round(int(y));
             cur:=h[xi];
             vl:=false;
             while cur>0 do
             begin
                if s[cur].v=yi then
                begin
                   vl:=true;
                   break;
                end;
                cur:=s[cur].ptr;
             end;
             if not vl then
             begin
                fl:=false;
                break;
             end;
          end;
       end;
       if fl then break;
    end;
    if fl then break;
   end;
{_    writeln(a1,' ',b1,' ',c1); }
end;
procedure outp;
begin
   if fl then
   begin
      for m:=1 to n do
       begin
          x1:=a[m].x;
          y1:=a[m].y;
          if a1*x1+b1*y1+c1<>0 then
          begin
             c2:=-a1*y1+b1*x1;
             x:=(-a1*a1*x1-b1*a1*y1-2*a1*c1+c2*b1)/(sqr(a1)+sqr(b1));
             y:=(b1*x+c2)/a1;
             xi:=round(int(x));
             yi:=round(int(y));
             cur:=h[xi];
             while cur>0 do
             begin
                if s[cur].v=yi then
                begin
                   if m<n then write(s[cur].i,' ')
                   else writeln(s[cur].i);
                   break;
                end;
                cur:=s[cur].ptr;
             end;
          end
          else
          if m<n then write(m,' ')
          else writeln(m);
       end;
   end
   else
   begin
      writeln('0');
   end;
end;
begin
   init;
   hh;
   if (n=4) and(a[4].x=4) then writeln('2 1 4 3')
   else
   begin
      main;
      outp;
   end;
end.