#include <bits/stdc++.h>
using namespace std;
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return x * f;
}
const int N = 3e5 + 5;
int n, del[N];
int st[N], top, ok[N];
struct node {
  double l, r;
  int id;
} s[N];
bool cmp(const node &a, const node &b) {
  return a.l == b.l ? a.r > b.r : a.l > b.l;
}
double cacl(node a, node b) {
  return a.l * b.l * (b.r - a.r) / ((b.l - a.l) * a.r * b.r);
}
int main() {
  n = read();
  for (int i = 1; i <= n; i++) {
    s[i].l = read();
    s[i].r = read();
    s[i].id = i;
  }
  sort(s + 1, s + n + 1, cmp);
  double maxn = -1e9;
  for (int i = 1; i <= n; i++) {
    if (s[i].r <= maxn)
      del[i] = 1;
    else
      maxn = s[i].r;
  }
  st[++top] = 1;
  for (int i = 2; i <= n; i++) {
    if (del[i]) continue;
    while (top > 1 && cacl(s[i], s[st[top]]) < cacl(s[st[top - 1]], s[st[top]]))
      top--;
    st[++top] = i;
  }
  for (int i = 1; i <= top; i++) {
    ok[s[st[i]].id] = 1;
    int p = st[i] + 1;
    while (p <= n && s[p].l == s[st[i]].l && s[p].r == s[st[i]].r)
      ok[s[p].id] = 1, p++;
  }
  for (int i = 1; i <= n; i++)
    if (ok[i]) printf("%d ", i);
  putchar('\n');
  return 0;
}
