#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;
// }