/*
#include <stdio.h>
int a[10001];
int n, i, j, temp, key;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=2; i<=n; i++)
{
key=a[i];
for(j = i - 1; j > 0 && a[j] > key; j--)
{
a[j+1]=a[j];
}
a[j+1]=key;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
/*
#include<stdio.h>
int main(){
int a[24] = {};
int n, i,k;
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &k);
a[k]++;
}
for(i = 1; i <= 23; i++){
printf("%d ", a[i]);
}
}
*/
/*
#include<stdio.h>
int main()
{
int n, i, j, k;
int a[100001] = {};
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &k);
a[k]++;
}
for(i = 0; i <= 100000; i++)
{
for(j = 0; j < a[i]; j++)
{
printf("%d ", i);
}
}
}
*/
//#include<stdio.h>
//
//void swap(int arr[], int idx1, int idx2)
//{
// int temp = arr[idx1];
// arr[idx1] = arr[idx2];
// arr[idx2] = temp;
//}
//
//int par(int arr[], int left, int right)
//{
// int pivot = arr[left];
// int low;
// int high = right;
//
// for(low = left + 1; low <= high; low++)
// {
// while(pivot >= arr[low] && low <= right)
// {
// low++;
// }
// while(pivot <= arr[high] && high >= (left+1))
// {
// high--;
// }
// if(low <= high)
// {
// swap(arr, low, high);
// }
//
// }
// swap(arr, left, high);
// return high;
//}
//
//void qs(int arr[], int left, int right)
//{
// if(left <= right)
// {
//
// int pivot = par(arr, left, right);
// qs(arr, left, pivot-1);
// qs(arr, pivot+1, right);
// }
//}
//
//int main()
//{
// //int arr[7] = {3, 2, 4, 1, 7, 6, 5};
//
// int i, n, arr[100001] = {};
// scanf("%d", &n);
// for(i = 0; i < n; i++){
// scanf("%d", &arr[i]);
// }
// //int len = sizeof(arr) / sizeof(int);
// qs(arr, 0, n-1);
//
// for(i = 0; i < n; i++)
// {
// printf("%d\n", arr[i]);
// }
// return 0;
//}
#include<stdio.h>
struct datas
{
int original;
int data;
int result;
};
void swap(struct datas arr[], int idx1, int idx2)
{
struct datas temp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = temp;
}
int par(struct datas arr[], int left, int right)
{
int pivot = arr[left].data;
int low;
int high = right;
for(low = left + 1; low <= high; low++)
{
while(pivot >= arr[low].data && low <= right)
{
low++;
}
while(pivot <= arr[high].data && high >= (left+1))
{
high--;
}
if(low <= high)
{
swap(arr, low, high);
}
}
swap(arr, left, high);
return high;
}
int par1(struct datas arr[], int left, int right){
int pivot = arr[left].original;
int low;
int high = right;
for(low = left + 1; low <= high; low++)
{
while(pivot >= arr[low].original && low <= right)
{
low++;
}
while(pivot <= arr[high].original && high >= (left+1))
{
high--;
}
if(low <= high)
{
swap(arr, low, high);
}
}
swap(arr, left, high);
return high;
}
void qs(struct datas arr[], int left, int right)
{
if(left <= right)
{
int pivot = par(arr, left, right);
qs(arr, left, pivot-1);
qs(arr, pivot+1, right);
}
}
void qs1(struct datas arr[], int left, int right)
{
if(left <= right)
{
int pivot = par1(arr, left, right);
qs1(arr, left, pivot-1);
qs1(arr, pivot+1, right);
}
}
/*
void rec(int arr[], int a,int b){
int pivot = (a + b) / 2;
if(arr[i] < pivot){
}
}
*/
int main()
{
struct datas sort[50001];
//int arr[7] = {3, 2, 4, 1, 7, 6, 5};
int i, n, arr[50001] = {};
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &sort[i].data);
sort[i].original = i;
}
//int len = sizeof(arr) / sizeof(int);
qs(sort, 0, n-1);
for(i = 0; i < n; i++)
{
sort[i].result = i;
}
qs1(sort, 0, n-1);
/* for(i = 0; i < n; i++)
{
printf("%2d ", sort[i].original);
}
printf("\n");
for(i = 0; i < n; i++)
{
printf("%2d ", sort[i].data);
}
printf("\n");
*/
for(i = 0; i < n; i++)
{
printf("%d ", sort[i].result);
}
return 0;
}
/*
Binary Search
#include <stdio.h>
int k;
void rec(int arr[], int a,int b)
{
int pivot;
if(a<=b)
{
pivot = (a + b) / 2;
if(k < arr[pivot])
{
rec(arr,a,pivot-1);
}
else if(k > arr[pivot])
{
rec(arr, pivot+1, b);
}
else
{
printf("%d",pivot);
}
}
}
int main()
{
int arr[7] = {1, 28, 36, 42, 57, 60, 72};
// int i, n, arr[50001] = {};
scanf("%d", &k);
// for(i = 0; i < n; i++){
// scanf("%d", &arr[i]);
// }
rec(arr, 0, 6);
// for(i = 0; i < 7; i++)
// {
// printf("%d ", arr[i]);
// }
return 0;
}
*/