#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<set>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<iostream>
#include<string>
#include<cmath>
#define N 100010
#define FOR(i,a,b) for(i=(a);i<=(b);i++)
#define ROF(i,a,b) for(i=(a);i>=(b);i--)
typedef long long LL;
using namespace std;
struct dat{int a,b,p;bool operator <(const dat &A)const{return (a<A.a)||(a==A.a&&b>A.b);}}t[N];
double c(double a1,double b1,double a2,double b2)
{
  if (a1==a2) return 1e9;
  return (double)(b1-b2)/(double)(a2-a1);
}
int b[N],sta[N],top=0,n;
int main()
{
  scanf("%d",&n);
  int i;
  FOR(i,1,n) 
  {
    scanf("%d%d",&t[i].a,&t[i].b);
    t[i].p=i;
  }
  sort(t+1,t+1+n);
  memset(b,0,sizeof(b));
  sta[1]=1;top=1;
  FOR(i,2,n)
  {
    if (t[i].a==t[i-1].a) continue;
    while (c(t[sta[top-1]].a,t[sta[top-1]].b,t[sta[top]].a,t[sta[top]].b)>=
           c(t[sta[top]].a,t[sta[top]].b,t[i].a,t[i].b)
          &&top>1)
    {
      top--;
    }
    sta[++top]=i;
  } 
  //printf("%d\n",top);
  FOR(i,1,top) b[t[sta[i]].p]=1;
  FOR(i,1,n) if (b[i]) printf("%d ",i);
}