//栈 先进后出 //队列 先进先出
#include <iostream>
using namespace std;
const int N=10010;
int stk[N],tt;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
while(tt&&stk[tt]>=x) tt--;
if(tt) cout<<stk[tt]<<" ";
else cout<<"-1"<<" ";
stk[++tt]=x;
}
return 0;
}
//***********栈
stk[N],tt;
//插入
stk[++tt]=x;
//弹出
tt--;
//判断栈是否为空
if(tt>0) not emply
else emply
//栈顶
stk[tt];
// ***********队列
//在队尾插入元素,在对头弹出元素
int q[N],hh,tt=-1;
//插入
q[++tt]=x;
//弹出
hh++;
//判断队列是否为空
if(hh<=tt) not emply
else emply
//取出队头元素
q[hh]