#include<bits/stdc++.h>
using namespace std;
#define int long long int
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define put(arr,v) fil(all(arr) , v)
#define precise(num)  cout<<fixed; cout << std::setprecision(num)
#define sort(v) sort(all(v));
#define fill_vec(v,val)  fill(all(v) , val)
#define fill_arr(ar,n,val) fill(ar , ar+n ,val)
#define nl cout<<"\n";
#define input_i(v) generate(all(v),nxt_i);
#define input_s(v) generate(all(v),nxt_s);
#define vst vector<string>
#define vi vector<int>
#define pi pair<int,int>

// namespace ohuefmi{
    
//     int nxt_i(){
//         int x;
//         cin>>x;
//         return x;
//     }
//     string nxt_s(){
//         string x;
//         cin>>x;
//         return x;
//     }
//     void print(vector<int>v){
//         for(auto i : v){
//             cout<<i<<" ";
//         }nl;
//     }
//      void print(vector<string>v){
//         for(auto i : v){
//             cout<<i<<" ";
//         }nl;
//     }
    
//     string binary(int n)
//     {
//         bitset<32>b(n) ;
//         string p =b.to_string();
//         return p;

//     }
//     int decimal(string s)
//     {
//         int res = 0;
//         for(int i = 0; i < s.size() ; i++ ){
//             if(s[i] == '1')
//             res = res + pow(2,s.size() - i -1);
//         }
//         return res;
//     }
//     bool isPrime(int n){
//         if (n <= 1) return false; if (n <= 3) return true;
//     if (n % 2 == 0 || n % 3 == 0) 
//         return false;
//     for (int i = 5; i * i <= n; i = i + 6) 
//         if (n % i == 0 || n % (i + 2) == 0) 
//             return false; 
  
//     return true; 
//     }
    
//      int pow (int x, int n,int mod) {//calculate x^n
//     if (n == 0) return 1;

//       int res = pow (x, n / 2,mod);

//     res = (res * res) % mod;
//     if (n % 2) res = (res * x ) % mod;

//     return res;
//     }
    
// }

// using namespace ohuefmi;
int32_t main(){
    
    
        ios_base::sync_with_stdio(cin.tie(NULL));
        cout.tie(NULL);
    
        int tc = 1; 
        // tc = nxt_i();

        while(tc -- ){
            
            
            int n;
            cin>>n;
            int a[n+1];
            map<int,int>cn;
            // vi v(n);
            // input_
            
            
            // map<int
            vector<int>v;
            // vector<int>
            for(int  i = 0; i < n ; i++ ){
                cin>>a[i];
                cn[a[i]] ++;
                
                if(cn[a[i]] == 1)
                    v.pb(a[i]);
                
            }
            
            
            int res = 0;
            
            
            for(int  i = 0 ;i < v.size() ; i++ )
            {
                
                int count = cn[v[i]];
                
                
                res += (count*(count-1))/2;
                
                
                
            }
            
            
            
            for(int i =0 ; i< n ; i ++ ){
                
                
                int count1  = cn[a[i]];
                
                
                int val = (count1*(count1-1)  - (count1-1)*(count1-2))/2;
                
                int ans = res - val;
                cout<<ans<<" ";
                    
                
            }
            cout<<endl;
            
            
        }       
       
      
      
}


Measured memory_bytes: 12020