#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
const int LOG = 18;
int n;
int a[N];
int f[LOG][N]; // f[k][i] = Min của đoạn bắt đầu từ i và có độ dài 2^k
// Tương đương với floor(log2(x)) nhưng tránh được số thực
int log2_floor(int x) {
return 31 - __builtin_clz(x);
}
void precompute() { // O(n * log2(n))
for (int i = 1; i <= n; i++) f[0][i] = a[i];
for (int k = 1; k < LOG; k++) {
for (int i = 1; i + (1 << k) - 1 <= n; i++) {
f[k][i] = min(f[k - 1][i], f[k - 1][i + (1 << (k - 1))]);
}
}
}
// Min của đoạn [l, r]
int getMin(int l, int r) { // O(1)
int k = log2_floor(r - l + 1);
return min(f[k][l], f[k][r - (1 << k) + 1]);
}
// Phần tử gần nhất bên trái < a[i]
int prevSmaller(int i) { // O(log2(n))
int l = 1, r = i - 1, ans = 0;
while (l <= r) {
int mid = (l + r) >> 1;
if (getMin(mid, i) < a[i]) {
ans = mid;
l = mid + 1;
}
else {
r = mid - 1;
}
}
return ans;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
precompute();
for (int i = 1; i <= n; i++) {
cout << prevSmaller(i) << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDJlNSArIDU7IApjb25zdCBpbnQgTE9HID0gMTg7ICAKCmludCBuOyAKaW50IGFbTl07IAppbnQgZltMT0ddW05dOyAvLyBmW2tdW2ldID0gTWluIGPhu6dhIMSRb+G6oW4gYuG6r3QgxJHhuqd1IHThu6sgaSB2w6AgY8OzIMSR4buZIGTDoGkgMl5rCgovLyBUxrDGoW5nIMSRxrDGoW5nIHbhu5tpIGZsb29yKGxvZzIoeCkpIG5oxrBuZyB0csOhbmggxJHGsOG7o2Mgc+G7kSB0aOG7sWMKaW50IGxvZzJfZmxvb3IoaW50IHgpIHsgIAoJcmV0dXJuIDMxIC0gX19idWlsdGluX2Nseih4KTsKfQoKdm9pZCBwcmVjb21wdXRlKCkgeyAvLyBPKG4gKiBsb2cyKG4pKQoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBmWzBdW2ldID0gYVtpXTsgIAoKCWZvciAoaW50IGsgPSAxOyBrIDwgTE9HOyBrKyspIHsKCQlmb3IgKGludCBpID0gMTsgaSArICgxIDw8IGspIC0gMSA8PSBuOyBpKyspIHsKCQkJZltrXVtpXSA9IG1pbihmW2sgLSAxXVtpXSwgZltrIC0gMV1baSArICgxIDw8IChrIC0gMSkpXSk7IAoJCX0KCX0KfQoKLy8gTWluIGPhu6dhIMSRb+G6oW4gW2wsIHJdCmludCBnZXRNaW4oaW50IGwsIGludCByKSB7IC8vIE8oMSkKCWludCBrID0gbG9nMl9mbG9vcihyIC0gbCArIDEpOyAKCXJldHVybiBtaW4oZltrXVtsXSwgZltrXVtyIC0gKDEgPDwgaykgKyAxXSk7IAp9CgovLyBQaOG6p24gdOG7rSBn4bqnbiBuaOG6pXQgYsOqbiB0csOhaSA8IGFbaV0KaW50IHByZXZTbWFsbGVyKGludCBpKSB7IC8vIE8obG9nMihuKSkKCWludCBsID0gMSwgciA9IGkgLSAxLCBhbnMgPSAwOyAgCgl3aGlsZSAobCA8PSByKSB7CgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgoJCWlmIChnZXRNaW4obWlkLCBpKSA8IGFbaV0pIHsKCQkJYW5zID0gbWlkOyAKCQkJbCA9IG1pZCArIDE7IAoJCX0KCQllbHNlIHsKCQkJciA9IG1pZCAtIDE7IAoJCX0KCX0KCXJldHVybiBhbnM7IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyAgCQoJY2luID4+IG47Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOyAKCglwcmVjb21wdXRlKCk7ICAKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQljb3V0IDw8IHByZXZTbWFsbGVyKGkpIDw8ICcgJzsgCgl9Cn0=