#include <bits/stdc++.h>
using namespace std;
long long b[100005], t[4 * 100005];
void build(long long s, long long e, long long tn) {
  if (s == e) {
    t[tn] = b[s];
    return;
  }
  long long mid = (s + e) / 2;
  build(s, mid, 2 * tn);
  build(mid + 1, e, 2 * tn + 1);
  t[tn] = max(t[2 * tn], t[2 * tn + 1]);
}
void update(long long s, long long e, long long tn, long long idx,
            long long val) {
  if (s == e) {
    t[tn] = max(t[tn], val);
    return;
  }
  long long mid = (s + e) / 2;
  if (idx <= mid)
    update(s, mid, 2 * tn, idx, val);
  else
    update(mid + 1, e, 2 * tn + 1, idx, val);
  t[tn] = max(t[2 * tn], t[2 * tn + 1]);
}
long long findmax(long long s, long long e, long long tn, long long l,
                  long long r) {
  if (l > e || s > r) return -1;
  if (s >= l && e <= r) return t[tn];
  long long mid = (s + e) / 2;
  return max(findmax(s, mid, 2 * tn, l, r),
             findmax(mid + 1, e, 2 * tn + 1, l, r));
}
signed main() {
  ios_base::sync_with_stdio(0), cin.tie(0);
  long long n;
  cin >> n;
  long long a[n];
  for (long long i = 0; i < n; i++) cin >> a[i];
  set<long long> s;
  for (long long i = 0; i < n; i++) s.insert(a[i]);
  long long c = 1;
  map<long long, long long> m;
  for (auto it = s.begin(); it != s.end(); it++) m[*it] = c++;
  long long x = n + 1;
  for (long long i = 0; i < x; i++) b[i] = 0;
  for (long long i = 0; i < 4 * x; i++) t[i] = 0;
  build(0, x, 1);
  long long ans[n];
  ans[n - 1] = -1;
  update(0, x, 1, m[a[n - 1]], n - 1);
  for (long long i = n - 2; i >= 0; i--) {
    long long p = findmax(0, x, 1, 0, m[a[i]] - 1);
    if (p == 0)
      ans[i] = -1;
    else
      ans[i] = p - i - 1;
    update(0, x, 1, m[a[i]], i);
  }
  for (long long i = 0; i < n; i++) cout << ans[i] << " ";
}
