
#include<iostream>
#include<cstdio>
using namespace std;
const int N=3000010; //求右边第一个大于ai的数的下标;
int n,tt,stk[N],a[N],ans[N];//stk栈存下标 ans存答案
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);//读入,存入a[];
for(int i=n;i>=1;i--){
while(tt>0 && a[i]>=a[stk[tt]])tt--; //栈顶比a[i]小,弹出;
ans[i]=stk[tt]; //存答案
stk[++tt]=i; //入栈
}
for(int i=1;i<=n;i++)printf("%d ",ans[i]);
return 0;
}
注意:下标需从1开始。