#include<bits/stdc++.h>
typedef long long int ll ;
#define pb push_back
#define rep(i,k,n) for (i = k; i < n; i++)
#define coy cout<<"YES\n"
#define con cout<<"NO\n"
using namespace std;
//const unsigned long long int M = 1000*100 ;
//ll sieve[M];
//vector<ll>ans;
//const unsigned int n=10000005;





ll ceil_div(ll a, ll b) {
    return (a + b - 1) / b;

}
ll gcd(ll a, ll b)
{
	if (b == 0)
		return a;
	return gcd(b, a % b);

}

ll dig_sum(ll n)
{
    ll x=n;
    ll cnt=0;

    while(x>0)
    {
        ll a=x%10;
        cnt=cnt+a;

        x=x/10;
    }
    return cnt;


}
ll dig_cnt(ll n)
{
    ll x=n;
    ll cnt=0;

    while(x>0)
    {
        ll a=x%10;
        cnt++;

        x=x/10;
    }
    return cnt;


}
bool dig_check(ll n,ll num,ll len)
{
    ll x=n;
    ll cnt=0;

    while(x>0)
    {
        ll a=x%10;
        if(a==num)
        {
            cnt++;
        }

        x=x/10;
    }
    if(cnt==len)
    {
        return true;
    }
    else
    {
        return false;
    }


}

// void si()
// {
//     ll i,j;
//     rep(i,0,M)
//     {
//         sieve[i]=1;
//     }
//     sieve[0]=sieve[1]=0;
//     for(i=2;i<M;i++)
//     {
//         for(j=i*i;j<M;j=j+i)
//         {
//             sieve[j]=0;
//         }
//     }
//     for(i=2;i<M;i++)
//     {
//         if(sieve[i]==1)
//         {
//             ans.push_back(i);
//         }
//     }
////cout<<ans[ans.size()-1]*ans[ans.size()-2];
////     rep(i,0,100)
////     {
////         cout<<ans[i]<<" ";
////     }
//
// }

ll low(vector<ll>arr,ll l,ll r,ll num)
{
    ll m=0;
    while(l<r)
    {
         m=l+(r-l)/2;
        if(arr[m]<num)
        {
            l=m+1;
        }
        else
        {
            r=m;
        }
    }
//cout<<arr[l]<<" ";
   if(arr[l]>=num)
   {
      return l;
   }
   else
   {
       return arr.size();
   }

//   if(arr[l]<=num)
//   {
//       return true;
//   }
//   else
//   {
//       return false;
//   }
}



void fun()
{

    ll n,m,j,d,l,r,i,x,y,k,z,a,b,c,p,q;
    cin>>n;
    vector<ll>vec(n);
    map<ll,ll>mp;
    rep(i,0,n)
    {
        cin>>vec[i];
        mp[vec[i]]++;
    }
    ll ans=0;
    for(i=n-1;i>=0;i--)
    {
      ans=ans+(i-(mp[vec[i]]-1));
      mp[vec[i]]--;
    }
    cout<<ans;



}






















int main()
{
//ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 long long int t;

//si();



t=1;
//cin>>t;
 while(t--)
 {
     fun();

    }


}

#include<bits/stdc++.h>
using namespace std;
int main() {
  int a;
  cin >> a;
  long long sum = 0;
  vector<int>vec(a);
  for(int i = 0;i < a;i++)cin >> vec[i];
  map<int,long long> mp;
  for(int i = 0;i < a;i++){
    mp[vec[i]]++;
  }
  for(int i = 0;i < a;i++){
    sum += a - mp[vec[i]];
  }  
  sum /=2;
  cout << sum;
}