# include <cstdio>
# include <algorithm>
using namespace std;
const int N = 100000;
struct vecNorm
{
int v1, v2;
};
vecNorm vNorm [N + 1];
int v [N + 1];
int vN [N + 1];
int u [N + 1];
int n;
bool comp1 (vecNorm a ,vecNorm b)
{
return a. v1 < b. v1;
}
bool comp2 (vecNorm a ,vecNorm b)
{
return a. v2 < b. v2;
}
void scanare ()
{
int i;
scanf ("%d", & n);
for (i = 1; i <= n; i ++)
{
scanf ("%d", & v [i]);
vNorm [i]. v1 = v [i];
vNorm [i]. v2 = i;
}
}
void init ()
{
freopen ("scmax.in", "r", stdin);
freopen ("scmax.out", "w", stdout);
scanare ();
}
void norm ()
{
int i;
sort (vNorm + 1, vNorm + n + 1, comp1);
for (i = 1; i <= n; i ++)
{
u [i] = i;
if (vNorm [i]. v1 == vNorm [i - 1]. v1)
u [i] = u [i - 1];
}
for (i = 1; i <= n; i ++)
vNorm [i]. v1 = u [i];
sort (vNorm + 1, vNorm + n + 1, comp2);
for (i = 1; i <= n; i ++)
printf ("%d ", vNorm [i]. v1);
}
int main ()
{
init ();
norm ();
for (i = 1; i <= n; i ++)
return 0;
}