Dima got into number sequences. Now he's got sequence a1, a2, ..., an, consisting of n positive integers. Also, Dima has got a function f(x), which can be defined with the following recurrence:

  * f(0) = 0; 
  * f(2·x) = f(x); 
  * f(2·x + 1) = f(x) + 1. 



Dima wonders, how many pairs of indexes (i, j) (1 ≤ i < j ≤ n) are there, such that f(ai) = f(aj). Help him, count the number of such pairs. 

Input

The first line contains integer n (1 ≤ n ≤ 105). The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).

The numbers in the lines are separated by single spaces.

Output

In a single line print the answer to the problem.

Please, don't use the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.

Examples

Input

3
1 2 4


Output

3


Input

3
5 3 1


Output

1

Note

In the first sample any pair (i, j) will do, so the answer is 3.

In the second sample only pair (1, 2) will do.
#include<iostream>
#include<stdio.h>
using namespace std;
__int64 a[100100][2];
__int64 f[100100]={0,1,1,2,2};
__int64 c[100100][2];
int main()
{
	int n,sum=0,k=0,l;
	__int64 i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%I64d",&a[i][0]);
	for(i=0;i<100100;i++)
	{
		a[i][1]=0;
	}
	for(i=5;i<100100;i++)
	{
		if(i%2==1)
		{
			f[i]=f[i/2]+1;
		}
		else
			f[i]=f[i/2];
	}
	for(i=0;i<n;i++)
	{
		int fl=0;
		for(int j=0;j<n;j++)
		{
			if(i==j)
				continue;
			else
			{
				//cout<<k<<endl;
				for(l=0;l<k;l++)
				{
					//printf("%I64d %I64d\n",c[l][0],c[l][1]);
					if((a[i][0]==c[l][0]&&a[j][0]==c[l][1])||(a[i][0]==c[l][1]&&a[j][0]==c[l][0]))
					{
						fl=1;
						//cout<<fl<<endl;
						break;
					}
				}
				if(fl==1)
					continue;
				else if((a[i][0]==0&&a[j][0]==0)||(a[i][0]%2==0&&a[j][0]%2==0)||(f[a[i][0]]==f[a[j][0]]))
				{
					sum++;
					c[k][0]=a[i][0];
					c[k][1]=a[j][0];
					k++;
					break;
				}
			}
		}
		//printf("%I64d%I64d%I64d\n",f[5],f[3],f[1]);
	}
	printf("%d\n",sum);
	return 0;
}

 		     	  		  		  	 	  	 	