There are n walruses standing in a queue in an airport. They are numbered starting from the queue's tail: the 1-st walrus stands at the end of the queue and the n-th walrus stands at the beginning of the queue. The i-th walrus has the age equal to ai.

The i-th walrus becomes displeased if there's a younger walrus standing in front of him, that is, if exists such j (i < j), that ai > aj. The displeasure of the i-th walrus is equal to the number of walruses between him and the furthest walrus ahead of him, which is younger than the i-th one. That is, the further that young walrus stands from him, the stronger the displeasure is.

The airport manager asked you to count for each of n walruses in the queue his displeasure.

Input

The first line contains an integer n (2 ≤ n ≤ 105) — the number of walruses in the queue. The second line contains integers ai (1 ≤ ai ≤ 109).

Note that some walruses can have the same age but for the displeasure to emerge the walrus that is closer to the head of the queue needs to be strictly younger than the other one.

Output

Print n numbers: if the i-th walrus is pleased with everything, print "-1" (without the quotes). Otherwise, print the i-th walrus's displeasure: the number of other walruses that stand between him and the furthest from him younger walrus.

Examples

Input

6
10 8 5 3 50 45


Output

2 1 0 -1 0 -1 

Input

7
10 4 6 3 2 8 15


Output

4 2 1 0 -1 -1 -1 

Input

5
10 3 1 10 11


Output

1 0 -1 -1 -1 

//package Round_75;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
import static java.lang.Math.*;

public class d implements Runnable {
    
    String input = "";
    String output = "";
    BufferedReader bf;
    FastScanner in;
    PrintWriter out;
    
    int search (int min[], int l, int r, int x){
        while (r - l > 1){
            int m = (r + l) / 2;
            if (x > min[m]) l = m; else r = m;
        }
        if (r >= min.length) r = min.length-1;
        return min[r] < x ? r : l;
    }
    
    public void solve() throws Exception {
        int n = in.nextInt();
        int a[] = new int[n];
        for (int i = 0; i<n; i++)
            a[i] = in.nextInt();
        int min[] = new int[n];
        min[n-1] = a[n-1];
        for (int i = n-2; i >=0; i--){
            min[i] = min(a[i], min[i+1]);
        }
        
        int ans[] = new int[n];
        for (int i = n-1; i >=0; i--){
            int x = search (min, i, n, a[i]);
            ans[i] = x - i - 1;
        }
        for (int i =0; i<n; i++)
            out.print(ans[i] + " ");
    }
    
    public void run() {
        try {
            
            if (input.equals("")) {
                bf = new BufferedReader(new InputStreamReader(System.in));
            } else {
                bf = new BufferedReader(new FileReader(input));
            }
            
            in = new FastScanner(bf);
            
            if (output.equals("")) {
                out = new PrintWriter(System.out);
            } else {
                out = new PrintWriter(new File(output));
            }
            
            solve();
            
            out.flush();
            
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            out.close();
        }
    }
    
    public static void main(String[] args) {
        new Thread(null, new d(), "", 1 << 23).start();
    }
    
    class FastScanner {
        
        BufferedReader bf;
        StringTokenizer st;
        
        public FastScanner(BufferedReader bf) {
            this.bf = bf;
        }
        
        public String next() throws Exception {
            while (st == null || !st.hasMoreTokens()) {
                st = new StringTokenizer(bf.readLine());
            }
            return st.nextToken();
        }
        
        public int nextInt() throws Exception {
            return Integer.parseInt(next());
        }
        
        public long nextLong() throws Exception {
            return Long.parseLong(next());
        }
        
        public double nextDouble() throws Exception {
            return Double.parseDouble(next());
        }
    }
}
