#include<bits/stdc++.h> ///简单离散化(去重???)
using namespace std;
const int N = 1e5 + 10 ;
struct zuobiao
{
int date,pos;
} a[N];
int aa[N];
int n;
int cmp(zuobiao a,zuobiao b)
{
if(a.date==b.date)
return a.pos<b.pos;
else
return a.date<b.date;
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i].date);
a[i].pos=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1; i<=n; i++)
{
aa[a[i].pos]=i;
}
for(int i=1;i<=n;i++)
{
printf("%d ",aa[i]);
}
printf("\n");
}
}
#include<bits/stdc++.h>
using namespace std;
vector<int>k1,k2;
int getid(int x){return lower_bound(k1.begin(),k1.end(),x)-k1.begin()+1;}
int main()
{
int n;
while(scanf("%d",&n)==1)
{
k1.clear();
k2.clear();
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
k1.push_back(x);
}
sort(k1.begin(),k1.end());
k1.erase(unique(k1.begin(),k1.end()),k1.end());
for(int i=0;i<n;i++)
{int x;x=getid(k1[i]);k2.push_back(x);}
for(int i=0;i<n;i++)
printf("%d %d\n",k1[i],k2[i]);
}
}