#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
struct point {
  int x, y, num;
} a[N];
inline bool cmp(point a, point b) { return a.x == b.x ? a.y > b.y : a.x > b.x; }
inline long double slope(point a, point b) {
  return (long double)a.x * b.x * (b.y - a.y) / a.y / b.y / (b.x - a.x);
}
int n, s[N], top = 0;
bool b[N];
bool ans[N];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &a[i].x, &a[i].y);
    a[i].num = i;
  }
  sort(a + 1, a + n + 1, cmp);
  int mx = 0;
  for (int i = 1; i <= n; ++i)
    if (a[i].y <= mx)
      b[i] = 1;
    else
      mx = a[i].y;
  s[top = 1] = 1;
  for (int i = 2; i <= n; ++i) {
    if (b[i] || slope(a[i], a[s[top]]) > 0) continue;
    while (top > 1 && slope(a[i], a[s[top]]) < slope(a[s[top]], a[s[top - 1]]))
      --top;
    s[++top] = i;
  }
  for (int i = 1; i <= top; ++i) {
    for (int j = s[i]; j <= n && a[j].x == a[s[i]].x && a[j].y == a[s[i]].y;
         ++j)
      ans[a[j].num] = 1;
  }
  for (int i = 1; i <= n; ++i)
    if (ans[i]) printf("%d ", i);
  return 0;
}
