#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long f = 1, w = 0;
  char x = 0;
  while (!(x >= '0' && x <= '9')) {
    x = getchar();
    if (x == '-') f = -1;
  }
  while (x >= '0' && x <= '9') {
    w = (w << 3) + (w << 1) + (x ^ 48);
    x = getchar();
  }
  return f * w;
}
struct people {
  long long a, b, id;
} p[300010];
long long n, s[300010], t;
bool v[300010], ans[300010];
bool cmp(people a, people b) {
  if (a.a == b.a) return a.b > b.b;
  return a.a > b.a;
}
long double check(people a, people b) {
  return (long double)a.a * b.a * (b.b - a.b) / (b.a - a.a) / b.b / a.b;
}
int main() {
  n = read();
  for (int i = 1; i <= n; i++) p[i].a = read(), p[i].b = read(), p[i].id = i;
  sort(p + 1, p + n + 1, cmp);
  s[1] = 1, t = 1;
  long long maxb = p[1].b;
  for (int i = 2; i <= n; i++)
    if (p[i].b <= maxb)
      v[i] = 1;
    else
      maxb = p[i].b;
  for (int i = 2; i <= n; i++) {
    if (v[i] || check(p[i], p[s[t]]) > 0) continue;
    while (t > 1 && check(p[i], p[s[t]]) < check(p[s[t - 1]], p[s[t]])) t--;
    s[++t] = i;
  }
  for (int i = 1; i <= t; i++) {
    ans[p[s[i]].id] = 1;
    for (int j = s[i] + 1; j <= n && p[s[i]].a == p[j].a && p[s[i]].b == p[j].b;
         j++)
      ans[p[j].id] = 1;
  }
  for (int i = 1; i <= n; i++)
    if (ans[i]) cout << i << " ";
  return 0;
}
