#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N;
cin >> N;
vector<int> H(N);
for (int i = 0; i < N; ++i) {
cin >> H[i];
}
vector<int> result(N, 0); // 初始化为0
stack<int> st; // 栈中保存的是索引
// 从右往左遍历
for (int i = N - 1; i >= 0; --i) {
// 弹出栈顶所有比当前元素小或等于的元素
while (!st.empty() && H[st.top()] <= H[i]) {
st.pop();
}
if (!st.empty()) {
result[i] = st.top() + 1; // 转换为1-based编号
} else {
result[i] = 0;
}
st.push(i);
}
// 输出结果
for (int i = 0; i < N; ++i) {
cout << result[i] << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwoKICAgIGludCBOOwogICAgY2luID4+IE47CiAgICB2ZWN0b3I8aW50PiBIKE4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpIHsKICAgICAgICBjaW4gPj4gSFtpXTsKICAgIH0KCiAgICB2ZWN0b3I8aW50PiByZXN1bHQoTiwgMCk7IC8vIOWIneWni+WMluS4ujAKICAgIHN0YWNrPGludD4gc3Q7IC8vIOagiOS4reS/neWtmOeahOaYr+e0ouW8lQoKICAgIC8vIOS7juWPs+W+gOW3pumBjeWOhgogICAgZm9yIChpbnQgaSA9IE4gLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIC8vIOW8ueWHuuagiOmhtuaJgOacieavlOW9k+WJjeWFg+e0oOWwj+aIluetieS6jueahOWFg+e0oAogICAgICAgIHdoaWxlICghc3QuZW1wdHkoKSAmJiBIW3N0LnRvcCgpXSA8PSBIW2ldKSB7CiAgICAgICAgICAgIHN0LnBvcCgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFzdC5lbXB0eSgpKSB7CiAgICAgICAgICAgIHJlc3VsdFtpXSA9IHN0LnRvcCgpICsgMTsgLy8g6L2s5o2i5Li6MS1iYXNlZOe8luWPtwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdFtpXSA9IDA7CiAgICAgICAgfQoKICAgICAgICBzdC5wdXNoKGkpOwogICAgfQoKICAgIC8vIOi+k+WHuue7k+aenAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpIHsKICAgICAgICBjb3V0IDw8IHJlc3VsdFtpXSA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==