Tavas is a cheerleader in the new sports competition named "Pashmaks".

<image>

This competition consists of two part: swimming and then running. People will immediately start running R meters after they finished swimming exactly S meters. A winner is a such person that nobody else finishes running before him/her (there may be more than one winner).

Before the match starts, Tavas knows that there are n competitors registered for the match. Also, he knows that i-th person's swimming speed is si meters per second and his/her running speed is ri meters per second. Unfortunately, he doesn't know the values of R and S, but he knows that they are real numbers greater than 0.

As a cheerleader, Tavas wants to know who to cheer up. So, he wants to know all people that might win. We consider a competitor might win if and only if there are some values of R and S such that with these values, (s)he will be a winner.

Tavas isn't really familiar with programming, so he asked you to help him.

Input

The first line of input contains a single integer n (1 ≤ n ≤ 2 × 105).

The next n lines contain the details of competitors. i-th line contains two integers si and ri (1 ≤ si, ri ≤ 104).

Output

In the first and the only line of output, print a sequence of numbers of possible winners in increasing order.

Examples

Input

3
1 3
2 2
3 1


Output

1 2 3 


Input

3
1 2
1 1
2 1


Output

1 3 
#include <bits/stdc++.h>
using namespace std;
long long int ccw(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
  long long int r1 = (long long int)a.first, s1 = (long long int)a.second;
  long long int r2 = (long long int)b.first, s2 = (long long int)b.second;
  long long int r3 = (long long int)c.first, s3 = (long long int)c.second;
  return (r1 - r2) * (s1 - s3) * s2 * r3 - (r1 - r3) * (s1 - s2) * r2 * s3;
}
int N;
pair<int, int> st;
vector<pair<int, int> > P;
vector<int> ch;
bool cmp(int x, int y) {
  pair<int, int> a = P[x], b = P[y];
  return ccw(st, a, b) > 0 || (ccw(st, a, b) == 0 && a.second > b.second) ||
         (ccw(st, a, b) == 0 && a.second == b.second && a.first > b.first);
}
bool bad(int a, int b, int c) { return ccw(P[a], P[b], P[c]) <= 0; }
vector<int> I, tt;
void get_ch() {
  I.resize(N);
  for (int i = 0; i < N; i++) I[i] = i;
  sort(I.begin(), I.end(), cmp);
  for (int i = 0; i < N; i++) {
    if (ch.size() < 2)
      ch.push_back(I[i]);
    else {
      while (ch.size() >= 2 &&
             bad(ch[ch.size() - 2], ch[ch.size() - 1], I[i])) {
        ch.erase(ch.end() - 1);
      }
      ch.push_back(I[i]);
    }
  }
  for (int i = 0; i < ch.size(); i++) tt.push_back(ch[i]);
  ch.clear();
  int pos = 0, sz = tt.size();
  for (int i = 0; i < sz; i++) {
    pair<int, int> p1 = P[tt[i]], p2 = P[tt[(i + 1) % sz]];
    while (pos < N && ccw(st, p1, P[I[pos]]) >= 0 &&
           ccw(st, p2, P[I[pos]]) <= 0) {
      if (ccw(p1, p2, P[I[pos]]) == 0) {
        ch.push_back(I[pos]);
      }
      pos++;
    }
  }
  for (int i = N; i--;) {
    if (I[i] == ch[0] || I[i] == ch.back()) continue;
    pair<int, int> p1 = P[ch[0]], p2 = P[ch.back()];
    if (ccw(p1, p2, P[I[i]]) == 0) ch.push_back(I[i]);
  }
}
vector<int> ans;
void solve() {
  ans.push_back(ch[0]);
  int pos;
  pair<int, int> ed = pair<int, int>(-1, -1);
  int sz = ch.size();
  for (int i = 1; i != sz + 1; i++) {
    pair<int, int> p = P[ch[i % sz]];
    if (ed.first < p.first) {
      ed = p;
      pos = i % sz;
    } else if (ed.first == p.first && ed.second < p.second) {
      ed = p;
      pos = i % sz;
    }
  }
  if (P[ch[pos]] != st) {
    for (int i = pos; i < ch.size(); i++) {
      ans.push_back(ch[i]);
    }
  } else {
    for (int i = pos;; i++) {
      if (i >= ch.size() || P[ch[i]] != st) break;
      ans.push_back(ch[i]);
    }
  }
  sort(ans.begin(), ans.end());
  ans.resize(unique(ans.begin(), ans.end()) - ans.begin());
  for (int i = 0; i < ans.size(); i++) {
    printf("%d ", ans[i] + 1);
  }
}
int main() {
  scanf("%d", &N);
  P.resize(N);
  st = pair<int, int>(-1, -1);
  for (int i = 0; i < N; i++) {
    int r, s;
    scanf("%d %d", &r, &s);
    P[i] = pair<int, int>(r, s);
    if (st.second < s) {
      st = P[i];
    } else if (st.second == s && st.first < r) {
      st = P[i];
    }
  }
  get_ch();
  solve();
}
