#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
****************************************************************/