#include <iostream>
using namespace std;
const int N = 100010;
int n;
int stk[N], tt; //tt为0表示没有元素,tt为栈顶,stk[tt]取栈顶元素
// stk[++tt] 为添加元素
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++)
{
int x;
scanf("%d", &x);
while (tt && stk[tt] >= x) tt--; //单调栈,栈里面不能出现单增,出现一个小的,把之前的
// 比他高的全部去掉,又重新变为单调的
if (tt) printf("%d ", stk[tt]);
else printf("-1 ");
stk[++tt] = x;
}
return 0;
}