#include <bits/stdc++.h>

using namespace std;

#define M_DEBUG if (0)
#define rep(i, n) for (int i = 0, i##_len = (n); i < i##_len; ++i)
#define reps(i, n) for (int i = 1, i##_len = (n); i <= i##_len; ++i)
#define rrep(i, n) for (int i = ((int)(n)-1); i >= 0; --i)
#define rreps(i, n) for (int i = ((int)(n)); i > 0; --i)
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define pb push_back
#define optimize_cin() \
    cin.tie(0);        \
    ios::sync_with_stdio(false)
template <class T>
bool chmax(T &a, const T &b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}
template <class T>
bool chmin(T &a, const T &b)
{
    if (b < a)
    {
        a = b;
        return 1;
    }
    return 0;
}

/******************************************************************************
	typedef
******************************************************************************/
using lint = long long;
typedef unsigned long long int ullint;

const ullint N_MAX = 2 * pow(10, 5);

/******************************************************************************
	Main
******************************************************************************/
int main()
{
    ullint n = 0;
    cin >> n;
    assert(n >= 3 && n <= N_MAX);

    vector<ullint> a_list(n, 0);
    // vector<ullint> count_list(n, 0); // A_i == A_j なるもののカウント
    // ullint count_list[N_MAX] = {0}; // A_i == A_j なるもののカウント #2
    map<ullint, ullint> num_to_count; // A |-> #{ A | A == A_i }
    rep(i, n)
    {
        cin >> a_list[i];
        assert(a_list[i] >= 1 && a_list[i] <= n);
        rep(j, i)
        {
            if (a_list[i] != a_list[j])
                continue;
            M_DEBUG
            {
                cout << "a_list[i] == a_list[j]: "
                     << i << ": "
                     << a_list[i] << ", "
                     << j << ": "
                     << a_list[j] << endl;
            }
            // count_eqn_num++;
            // こういうことやってるとTLEします #2
            // count_list[i]++;
            // count_list[j]++;
            // こういうことやってるとTLEします
            // rep(k, n) {
            //     if (k == i || k == j) continue;
            //     ret_list[k]++;
            // }
            // num_to_count[a_list[i]]++;
        }
        num_to_count[a_list[i]]++;
    }

    // こういうことやってるとTLEします
    // for (auto x : ret_list) {
    //     cout << x << endl;
    // }
    // こういうことやってるとTLEします #2
    // rep(i,n) {
    //     cout << count_eqn_num - count_list[i] << endl;
    // }

    ullint count_eqn_num = 0;         // #{ (i, j) | A_i == A_j }
    for (auto a : num_to_count) {
        ullint a_num = a.second;
        count_eqn_num += a_num * (a_num - 1) / 2;
    }
    rep(i, n) {
        ullint a_num = num_to_count[a_list[i]];
        M_DEBUG {
            cout << count_eqn_num \
                 << " - " << a_num \
                 << " + 1" << endl;
        }
        // #{ (j, k) | A_j == A_k } - #{ (i, j) | A_i == A_j, i != j }
        // #{ (i, j) | A_i == A_j, i != j } = #{ (i, j) | A_i == A_j } - 1
        cout << count_eqn_num \
                - a_num + 1 \
             << endl;
    }

    return 0;
}


Measured memory_bytes: 11008