#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int num;
int a;
int b;
}number;
number arr[50001]={}, temp;
int cnt=0;
void qs(int s, int e)
{
if(s>=e){
return;
}
int pivot=s;
int left=s;
int right=e+1;
int temp;
do{
cnt++;
do{
left++;
}while (arr[pivot].num>arr[left].num);
do{
right--;
}while (arr[pivot].num<arr[right].num);
if(right<left){
break;
}
temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
arr[left].b=cnt;
}while(left<right);
temp=arr[pivot].num;
arr[pivot]=arr[right];
arr[right]=temp;
qs(s, right-1);
qs(right+1, e);
}
int compare(const int* a, const int* b)
{
if(*a<*b){
return -1;
}
else if (*a>*b){
return 1;
}
else{
return 0;
}
}
int main()
{
int n, i, j, max;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf ("%d", &arr[i]);
arr[i].a=i;
}
qs(0, n-1);
for(i=0; i<n-1; i++){
min=arr[i].a;
for(j=i+1; j<n; j++){
if(arr[max].a>arr[j].a){
max=j;
}
}
temp=arr[max].a;
arr[max].a=arr[i].a;
arr[i].a=arr[max].a;
}
for(i=0; i<n; i++){
printf ("%d ", arr[i].b);
}
return 0;
}