#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <stack>
using namespace std;
const int N = 5e4 + 5 ;
const int INF = 0x3f3f3f3f ;
typedef long long ll;
int a[ N] , b[ N] ;
int main ( )
{
int n;
cin >> n;
for ( int i = 0 ; i < n; i++ ) {
scanf ( "%d" , & b[ i] ) ;
a[ i] = b[ i] ;
}
sort ( a, a + n) ;
int num = 1 ;
for ( int i = 1 ; i < n; i++ ) {
if ( a[ i] != a[ i - 1 ] ) {
a[ num++ ] = a[ i] ;
}
}
for ( int i = 0 ; i < n; i++ ) {
b[ i] = lower_bound ( a, a + num, b[ i] ) - a;
cout << b[ i] << " " ;
}
return 0 ;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <stack>
using namespace std;
const int N = 5e4 + 5 ;
const int INF = 0x3f3f3f3f ;
typedef long long ll;
int a[ N] , b[ N] ;
int main ( )
{
int n;
cin >> n;
for ( int i = 0 ; i < n; i++ ) {
scanf ( "%d" , & b[ i] ) ;
a[ i] = b[ i] ;
}
sort ( a, a + n) ;
int num = unique ( a, a + n) - a;
for ( int i = 0 ; i < n; i++ ) {
b[ i] = lower_bound ( a, a + num, b[ i] ) - a;
cout << b[ i] << " " ;
}
return 0 ;
}