#include <bits/stdc++.h>
using namespace std;
typedef struct {
  string name;
  int reg;
  int score;
} stu;
int comp(stu a, stu b) {
  if (a.reg > b.reg)
    return 0;
  else if (a.reg < b.reg)
    return 1;
  else if (a.reg == b.reg) {
    if (a.score >= b.score)
      return 1;
    else if (a.score < b.score)
      return 0;
  }
}
int div1[6000];
int div2[6000];
vector<int> v;
int main() {
  int n, i, j, m;
  int a, b;
  int bestf = 0, best = 0;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &a);
    v.push_back(a);
  }
  for (i = 0; i < n; i++) {
    for (a = 0; a < n + 1; a++) div1[a] = 0;
    bestf = 0;
    for (j = i; j < n; j++) {
      div1[v[j]]++;
      if (div1[v[j]] > bestf) {
        bestf = div1[v[j]];
        best = v[j];
      } else if (div1[v[j]] == bestf) {
        if (best > v[j]) {
          best = v[j];
        }
      }
      div2[best]++;
    }
  }
  for (i = 1; i <= n; i++) {
    printf("%d ", div2[i]);
  }
}
