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 
5
10 50
10 50
10 50
10 50
10 50
 2
10000 10000
10000 10000
 3
10000 10000
10000 10000
10000 10000
 3
1000 3000
1500 1500
3000 1000
 43
75 16
70 7
75 16
54 2
70 7
54 2
70 7
54 2
70 7
54 2
54 2
70 7
70 7
54 2
70 7
75 16
70 7
54 2
54 2
54 2
54 2
54 2
54 2
75 16
70 7
70 7
54 2
70 7
75 16
54 2
75 16
75 16
54 2
54 2
70 7
70 7
75 16
70 7
70 7
70 7
75 16
75 16
54 2
 1
1 1
 2
1 1
1 1
 44
78 52
75 16
70 7
75 16
54 2
70 7
54 2
70 7
54 2
70 7
54 2
54 2
70 7
70 7
54 2
70 7
75 16
70 7
54 2
54 2
54 2
54 2
54 2
54 2
75 16
70 7
70 7
54 2
70 7
75 16
54 2
75 16
75 16
54 2
54 2
70 7
70 7
75 16
70 7
70 7
70 7
75 16
75 16
54 2
 3
1000 3000
1499 1499
3000 1000
 5
50 50
49 50
50 49
49 49
50 1
 18
82 38
33 69
33 69
33 69
33 69
33 69
82 38
33 69
33 69
33 69
82 38
33 69
33 69
82 38
82 38
33 69
33 69
33 69
 1
10000 9999
 3
1000 3000
1501 1501
3000 1000
 2
1 2
2 1

1 2 3 4 5
 1 2
 1 2 3
 1 2 3
 1 3 16 24 29 31 32 37 41 42
 1
 1 2
 1
 1 3
 1
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 1
 1 2 3
 1 2 

//package codeforces.cfr299div2;

import java.util.*;

/**
 * Created by bistrashkin on 4/21/15.
 */
public class E {
    private static class Guy {
        int s, r, num;

        private Guy(int s, int r, int num) {
            this.s = s;
            this.r = r;
            this.num = num;
        }
    }
    private static Comparator<Guy> GC = new Comparator<Guy>() {
        @Override
        public int compare(Guy o1, Guy o2) {
            int ds = o1.s - o2.s;
            int dr = o1.r - o2.r;
            if (ds > 0 && dr >= 0 || ds >= 0 && dr > 0) {
                return 1;
            } else if (ds < 0 && dr <= 0 || ds <= 0 && dr < 0) {
                return -1;
            } else {
                return 0;
            }
        }
    };


    public static void main(String[] args) {
        sol();
    }


    private static void sol() {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Guy[] guys = new Guy[n];
        for (int i = 0; i < n; i++) {
            guys[i] = new Guy(in.nextInt(), in.nextInt(), i + 1);
        }
        int[] maxRForS = new int[10001];
        int[] maxSForR = new int[10001];
        for (Guy g : guys) {
            maxRForS[g.s] = Math.max(maxRForS[g.s], g.r);
            maxSForR[g.r] = Math.max(maxSForR[g.r], g.s);
        }
        int curMaxRForS = 0;
        int curMaxSForR = 0;
        for (int x = 10000; x >= 1; x--) {
            curMaxRForS = Math.max(curMaxRForS, maxRForS[x]);
            maxRForS[x] = curMaxRForS;
            curMaxSForR = Math.max(curMaxSForR, maxSForR[x]);
            maxSForR[x] = curMaxSForR;
        }
        StringBuilder sb = new StringBuilder();
        for (Guy g : guys) {
            if (maxSForR[g.r] <= g.s && maxRForS[g.s] <= g.r) {
                if (sb.length() > 0) {
                    sb.append(" ");
                }
                sb.append(g.num);
            }
        }
        System.out.println(sb.toString());
    }

    private static void longtrue() {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Guy[] guys = new Guy[n];
        for (int i = 0; i < n; i++) {
            guys[i] = new Guy(in.nextInt(), in.nextInt(), i + 1);
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            boolean winner = true;
            for (int j = 0; j < n; j++) {
                if (GC.compare(guys[i], guys[j]) == -1) {
                    winner = false;
                    break;
                }
            }
            if (winner) {
                if (sb.length() > 0) {
                    sb.append(" ");
                }
                sb.append(guys[i].num);
            }

        }
        System.out.println(sb.toString());
    }
}
