### Problem Statement

A permutation p, p, ..., p[n-1] is a sequence containing each number from 0 to n-1 exactly once. The result of applying permutation p to an array a of length n is an array b of length n, where b[p[i]] = a[i] (0-based indices).

Given an array a, find a permutation which has the effect of sorting the elements of a in non-descending order, i.e., an order where each element is greater than or equal to the previous one. If there are several suitable permutations return the lexicographically smallest one.

The permutation p, p, ..., p[n-1] is considered lexicographically smaller than the permutation q, q, ..., q[n-1] if there is an index i such that p[i] < q[i] and the equation p[j] = q[j] holds for all j < i.

### Definition

 Class: SortingWithPermutation Method: getPermutation Parameters: int[] Returns: int[] Method signature: int[] getPermutation(int[] a) (be sure your method is public)

### Constraints

-a will contain between 1 and 50 elements, inclusive.
-Each element of a will be between 1 and 1000, inclusive.

### Examples

0)

 `{2, 3, 1}`
`Returns: {1, 2, 0 }`
 The element that is originally at position 0 goes to position 1. The elements originally at positions 1 and 2 go to positions 2 and 0, respectively.
1)

 `{2, 1, 3, 1}`
`Returns: {2, 0, 3, 1 }`
 There are two suitable permutations - {2, 0, 3, 1} and {2, 1, 3, 0}. The first one is lexicographically smaller.
2)

 `{4, 1, 6, 1, 3, 6, 1, 4}`
`Returns: {4, 0, 6, 1, 3, 7, 2, 5 }`

#### Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=7952

#### Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=13742&pm=7952

FedorTsarev

#### Testers:

PabloGilberto , legakis , Olexiy , ivan_metelsky

Sorting