#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 2e5 + 10;
const long double INF = 1e15 + 10;
const long double Epsilon = 1e-7;
struct line {
  long double v, val_1, val_2;
  long long s, dp, id;
};
line k[MAXN];
vector<long long> res;
long long s[MAXN];
long long r[MAXN];
bool cmp1(line a, line b) {
  if (a.s == b.s) {
    return (a.v > b.v);
  } else {
    return (a.s < b.s);
  }
}
bool cmp2(line a, line b) {
  if (a.s == b.s) {
    return (a.v < b.v);
  } else {
    return (a.s < b.s);
  }
}
long double T(long long i, long long j, bool z) {
  if (k[i].v < k[j].v) {
    return INF;
  }
  if (abs(k[i].v - k[j].v) < Epsilon && abs(k[i].s - k[j].s) < Epsilon) {
    if (z) {
      return INF;
    } else {
      return 0;
    }
  }
  return (k[j].s - k[i].s) / (long double)(k[i].v - k[j].v);
}
int main() {
  ios_base ::sync_with_stdio(false);
  cin.tie(0);
  long long n;
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> s[i] >> r[i];
    k[i].id = i;
    k[i].s = r[i];
    k[i].v = -(r[i]) / (long double)(s[i]);
  }
  sort(k, k + n, cmp1);
  k[0].dp = 0;
  k[0].val_1 = INF;
  for (long long i = 1; i < n; i++) {
    k[i].dp = i - 1;
    bool h = false;
    while (T(k[i].dp, i, 1) - T(k[k[i].dp].dp, k[i].dp, 1) > Epsilon) {
      h = true;
      if (k[i].dp == k[k[i].dp].dp) {
        break;
      }
      k[i].dp = k[k[i].dp].dp;
    }
    if ((!h && abs(T(i - 1, i, 1) - INF) < Epsilon) ||
        (abs(T(k[i].dp, i, 1) - INF) < Epsilon)) {
      k[i].dp = i;
      k[i].val_1 = INF;
    } else {
      k[i].val_1 = T(k[i].dp, i, 1);
    }
  }
  for (long long i = 0; i < n; i++) {
    k[i].s = -k[i].s;
    k[i].v = -k[i].v;
  }
  sort(k, k + n, cmp2);
  k[0].dp = 0;
  k[0].val_2 = 0;
  for (long long i = 1; i < n; i++) {
    k[i].dp = i - 1;
    while (T(k[k[i].dp].dp, k[i].dp, 0) - T(k[i].dp, i, 0) > Epsilon) {
      if (k[i].dp == k[k[i].dp].dp) {
        break;
      }
      k[i].dp = k[k[i].dp].dp;
    }
    k[i].val_2 = T(k[i].dp, i, 0);
  }
  for (long long i = 0; i < n; i++) {
    k[i].s = -k[i].s;
    k[i].v = -k[i].v;
  }
  for (long long i = 0; i < n; i++) {
    if (abs(k[i].val_2 - INF) < Epsilon) {
      continue;
    }
    if (k[i].val_1 - k[i].val_2 > 0 &&
        ((k[i].val_1 * k[i].v) + k[i].s > Epsilon ||
         (k[i].val_2 * k[i].v) + k[i].s > Epsilon)) {
      res.push_back(k[i].id + 1);
    }
  }
  sort(res.begin(), res.end());
  for (long long i = 0; i < res.size(); i++) {
    cout << res[i] << " ";
  }
}
