#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;
}
FOR(i,1,top) b[t[sta[i]].p]=1;
FOR(i,1,n) if (b[i]) printf("%d ",i);
}