#include<stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <map>
#include <string.h>
using namespace std;
int main(){
int n,*arr,*arr2;
map<int,int> mymap;
while(scanf("%d",&n) != EOF){
arr =(int*)malloc(sizeof(int)*n);
arr2 = (int*)malloc(sizeof(int)*n);
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
arr2[i] = arr[i];
}
sort(arr2,arr2+n);
int index = 0;
for(int i=0; i<n; i++){
mymap.insert(pair<int,int>(arr2[i],index)); //插入数字和对应的 排名
index ++;
if( i!=0 && arr2[i]==arr2[i-1])
index --;
}
for(int i=0; i<n; i++){
if(i==0)
printf("%d",mymap.find(arr[i])->second+1);
else
printf(" %d",mymap.find(arr[i])->second+1);
}
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 2218
User: admin
Language: C++
Result: Accepted
Time:8 ms
Memory:1212 kb
****************************************************************/