/*
#include <stdio.h>
int arrn[1000001]={0};
int bs(int s, int e, int k)
{
int c=(s+e)/2;
if(s>e) return -1;
if(arrn[c]>k)
{
bs(s,c-1,k);
}
else if(arrn[c]<k)
{
bs(c+1,e,k);
}
else
{
return c;
}
}
int main()
{
int n,m,i,j,w=-1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&arrn[i]);
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&w);
printf("%d ",bs(1,n,w));
}
return 0;
}
#include <stdio.h>
int arr[1000001]= {0};
int n;
int bs(int s, int e, int k)
{
int c=(s+e)/2;
if(s==e&&arr[c]>=k) return c;
if(s>e) return n+1;
if(arr[c]>=k)
{
bs(s,c,k);
}
else if(arr[c]<k)
{
bs(c+1,e,k);
}
}
int main(void)
{
int k,i;
scanf("%d %d",&n, &k);
for(i=1; i<=n; i++)
{
scanf("%d",&arr[i]);
}
printf("%d",bs(1,n,k));
}
*/
#include <stdio.h>
int n, i, j;
int buble[50001],arr[50001],temp;
int bs(int s, int e, int k)
{
int c=(s+e)/2;
if(s>e) return -1;
if(buble[c]>k)
{
bs(s,c-1,k);
}
else if(buble[c]<k)
{
bs(c+1,e,k);
}
else
{
return c;
}
}
void qs(int s, int e)
{
int pivot=s;
int left=s,right=e+1;
if(s>=e)
return ;
do
{
do
{
left++;
}while(buble[pivot]>buble[left]);
do
{
right--;
}while(buble[pivot]<buble[right]);
if(left<right)
{
int tmp=buble[left];
buble[left]=buble[right];
buble[right]=tmp;
}
}while(left<right);
int tmp=buble[pivot];
buble[pivot]=buble[right];
buble[right]=tmp;
qs(s,right-1);
qs(right+1,e);
}
int main()
{
scanf("%d", &n);
for (i=1; i<=n; i++)//입력
{
scanf("%d", &arr[i]);
buble[i]=arr[i];
}
qs(1,n);
for(i=1;i<=n;i++)
{
printf("%d ", bs(1,n,arr[i])-1);
}
return 0;
}