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.
import java.util.HashMap;
import java.util.Scanner;


public class CodeforcesRound167B {
    HashMap<Integer,Integer> map = new  HashMap<Integer,Integer>();
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    
    new  CodeforcesRound167B().run();
    
    

    }
    
    public int P (int a ) 
    {
    
    if((a==0)) 
    {
       
        
        return a;
    }
    
    if(a%2==0) 
    {
        if(map.get(a)==null) 
        {
        map.put(a,P(a/2)); 
        return  map.get(a);
        }
        else
        {
        return  map.get(a);
        }   
        
        
       
    }
    else
    
    {
       
        if(map.get(a)==null) 
        {
        map.put(a,P((a-1)/2)+1); 
        return  map.get(a);
        }
        else
        {
        return  map.get(a);
        }   
        
      
    }
    
    
    
    
        
    }
    
    
    
    
    
    public void run() 
    {
    Scanner kde=new  Scanner(System.in);
    int n=kde.nextInt();
    long sum=0;
    
     int[] m = new int[n] ;
     
    for (int i=0; i<n; i++)
    {
        m[i]=  Integer.parseInt( kde.next())  ;  
    }
     HashMap<Integer,Integer> map1 = new  HashMap<Integer,Integer>();
     
     
     
    for (int i=0; i<n; i++)
    {
       if(map1.get(P(m[i]))==null) 
        {
        map1.put(P(m[i]),0); 
       }
        else
        {
        map1.put(P(m[i]),map1.get(P(m[i]))+1); 
        sum +=map1.get(P(m[i]));
        }   
    }
    
    
    
    
    System.out.println( sum);
    
    }
    
    

}
