Problem:
Score : 300 points

Problem Statement

Takahashi is a teacher responsible for a class of N students.

The students are given distinct student numbers from 1 to N.

Today, all the students entered the classroom at different times.

According to Takahashi's record, there were A_i students in the classroom when student number i entered the classroom (including student number i).

From these records, reconstruct the order in which the students entered the classroom.

Constraints

1 \le N \le 10^5

1 \le A_i \le N

A_i \neq A_j (i \neq j)

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 \ldots A_N

Output

Print the student numbers of the students in the order the students entered the classroom.

Sample Input 1

3
2 3 1

Sample Output 1

3 1 2

First, student number 3 entered the classroom.

Then, student number 1 entered the classroom.

Finally, student number 2 entered the classroom.

Sample Input 2

5
1 2 3 4 5

Sample Output 2

1 2 3 4 5

Sample Input 3

8
8 2 7 3 4 5 6 1

Sample Output 3

8 2 4 5 6 7 3 1

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)

import java.io.*;
import java.util.*;
import java.util.stream.Collectors;

public class Main {

    public static void main(final String[] args) throws Exception {
        final Scanner sc = new Scanner(System.in);
        long N;
        N = sc.nextLong();

        final PriorityQueue<Pair> queue
                = new PriorityQueue<>(Comparator.comparingInt(Pair::getA));
        for(int i = 0 ; i < N ; i++){
            queue.add(new Pair(sc.nextInt(), i + 1));
        }

        final Solver solver = new Solver();
        solver.solve(queue);
    }
}

class Pair {
    final private int a;
    final private int b;

    public Pair(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof Pair)) {
            return false;
        }
        final Pair pair = (Pair) o;
        return getA() == pair.getA() &&
                getB() == pair.getB();
    }

    @Override
    public int hashCode() {
        return Objects.hash(getA(), getB());
    }
}

class Solver {
    public void solve(PriorityQueue<Pair> queue) {
        final List<Integer> ans = new ArrayList<>();
        while (!queue.isEmpty()) {
            final Pair p = queue.poll();
            ans.add(p.getB());
        }

        System.out.println(ans.stream().map(String::valueOf).collect(Collectors.joining(" ")));
    }
}