#include <bits/stdc++.h>
using namespace std;
struct node {
  int a, b, id;
  double x, y;
} q[300300], s[300300], qc[300300];
int n, top, js;
bool pd[300300];
vector<int> son[300300];
bool cmp(const node &a, const node &b) {
  return a.x == b.x ? a.y < b.y : a.x < b.x;
}
double get(node a, node b) { return (a.y - b.y) / (a.x - b.x); }
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &q[i].a, &q[i].b);
    q[i].id = i;
    q[i].x = (double)1000.00000 / (double)q[i].a;
    q[i].y = (double)1000.00000 / (double)q[i].b;
  }
  sort(q + 1, q + n + 1, cmp);
  int id = q[1].id, stda = q[1].a, stdb = q[1].b;
  qc[++js] = q[1];
  for (int i = 2; i <= n; ++i) {
    if (q[i].a != stda || q[i].b != stdb) {
      qc[++js] = q[i];
      id = q[i].id;
      stda = q[i].a;
      stdb = q[i].b;
    } else
      son[id].push_back(q[i].id);
  }
  s[++top] = qc[1];
  for (int i = 2; i <= js; ++i) {
    if (qc[i].y >= s[top].y) continue;
    while (top != 1 && get(s[top], qc[i]) < get(s[top - 1], s[top])) top--;
    s[++top] = qc[i];
  }
  for (int i = 1; i <= top; ++i) {
    int num = s[i].id;
    pd[num] = 1;
    for (int j = 0; j < son[num].size(); ++j) pd[son[num][j]] = 1;
  }
  for (int i = 1; i <= n; ++i)
    if (pd[i]) printf("%d ", i);
  puts("");
  return 0;
}
