//单调栈的作用:寻找数组中每一个数的左边比他小的第一个数(或下标)
//存在小标 x < y 且 nums[x] > nums[y] 的情况 , nums[x]是没用的
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int n;
stack<int> s;
vector<int> nums;
int main (){
cin>>n;
for (int i=0;i<n;i++){
int x;cin>>x;
nums.push_back(x);
}
for (int i=0;i<n;i++){
while(s.size() ){
int x = s.top();
if (x >= nums[i]) s.pop();
else{
cout<<x<<" ";
break;
}
}
if (!s.size())
cout<<-1<<" ";
s.push(nums[i]);
}
}