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;
template <class T1, class T2>
inline istream& operator>>(istream& fin, pair<T1, T2>& pr) {
  fin >> pr.first >> pr.second;
  return fin;
}
template <class T0, class T1, class T2>
inline istream& operator>>(istream& fin, tuple<T0, T1, T2>& t) {
  fin >> get<0>(t) >> get<1>(t) >> get<2>(t);
  return fin;
}
template <class T>
inline istream& operator>>(istream& fin, vector<T>& a) {
  for (auto& u : a) fin >> u;
  return fin;
}
template <class T, size_t n>
inline istream& operator>>(istream& fin, array<T, n>& a) {
  for (auto& u : a) fin >> u;
  return fin;
}
template <class FwdIter>
inline auto dump(FwdIter first, FwdIter last, const char* dlm) -> void {
  copy(first, last,
       ostream_iterator<typename iterator_traits<FwdIter>::value_type>(cout,
                                                                       dlm));
}
inline bool fail(const pair<int, int>& a0, const pair<int, int>& a1,
                 const pair<int, int>& a2) {
  const int64_t r0 = a0.first;
  const int64_t r1 = a1.first;
  const int64_t r2 = a2.first;
  const int64_t s0 = a0.second;
  const int64_t s1 = a1.second;
  const int64_t s2 = a2.second;
  vector<pair<int, int>> test({a0, a1, a2});
  ;
  return r1 * (s0 - s1) * s2 * (r0 - r2) > r2 * (s0 - s2) * s1 * (r0 - r1);
}
void e535() {
  size_t n;
  cin >> n;
  vector<pair<int, int>> a(n);
  cin >> a;
  vector<size_t> ord(n);
  iota(begin(ord), end(ord), 0);
  sort(begin(ord), end(ord),
       [&a](const size_t i, const size_t j) { return a[j] < a[i]; });
  vector<size_t> out;
  const size_t nil = -1;
  size_t idx = nil;
  ;
  const auto ismasked = [&a](const size_t i, const size_t j) {
    const auto fail =
        a[i] == a[j] || a[i].first < a[j].first || a[i].second < a[j].second;
    return !fail;
  };
  for (const auto k : ord) {
    if (idx != nil && ismasked(out[idx], k)) continue;
    if (!out.empty() && ismasked(out.back(), k)) continue;
    while (idx != nil) {
      const auto i = out[idx];
      const auto j = out.back();
      if (ismasked(j, k) || !fail(a[i], a[j], a[k]))
        break;
      else {
        out.pop_back();
        for (; idx != nil && a[out[idx]] == a[out.back()]; --idx)
          ;
      }
    }
    if (out.empty() || !ismasked(out.back(), k)) out.push_back(k);
    const auto size = out.size();
    if (1 < size && a[out[size - 2]] != a[out[size - 1]]) idx = size - 2;
  }
  sort(begin(out), end(out));
  transform(begin(out), end(out), ostream_iterator<size_t>(cout, " "),
            bind(plus<size_t>(), placeholders::_1, 1));
}
int main(const int argc, char* argv[]) {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  e535();
  return EXIT_SUCCESS;
}
