#include <stdio.h>

int main() {
    int n;
    scanf("%d\n", &n);

    int shuzu[n];
    for (int i = 0; i < n; i++){
        int a;
        scanf("%d", &a);
        shuzu[i] = a;
    }

    for (int i = 0; i < n; i++){
        int sum = 0;
        for (int j = i; j >= 0; j--){
            if (shuzu[j] < shuzu[i]){
                sum++;
            }
        }
        printf("%d ", sum);
    }
    return 0;
}


//更高效的解法
// #include <stdio.h>
// #include <stdlib.h>
// #include <string.h>

// #define MAX_N 100010

// int tree[MAX_N];

// void update(int index, int value, int n) {
//     while (index <= n) {
//         tree[index] += value;
//         index += index & -index;
//     }
// }

// int query(int index) {
//     int sum = 0;
//     while (index > 0) {
//         sum += tree[index];
//         index -= index & -index;
//     }
//     return sum;
// }

// int main() {
//     int n;
//     scanf("%d", &n);
    
//     int arr[n];
//     for (int i = 0; i < n; i++) {
//         scanf("%d", &arr[i]);
//     }
    
//     // 初始化树状数组
//     memset(tree, 0, sizeof(tree));
    
//     for (int i = 0; i < n; i++) {
//         // 查询比arr[i]小的数个数
//         int count = query(arr[i] - 1);
//         printf("%d ", count);
//         // 更新树状数组
//         update(arr[i], 1, MAX_N);
//     }
    
//     return 0;
// }