Takahashi is playing with N cards.

The i-th card has an integer X_i on it.

Takahashi is trying to create as many pairs of cards as possible satisfying one of the following conditions:

* The integers on the two cards are the same.
* The sum of the integers on the two cards is a multiple of M.



Find the maximum number of pairs that can be created.

Note that a card cannot be used in more than one pair.

Constraints

* 2≦N≦10^5
* 1≦M≦10^5
* 1≦X_i≦10^5

Input

The input is given from Standard Input in the following format:


N M
X_1 X_2 ... X_N


Output

Print the maximum number of pairs that can be created.

Examples

Input

7 5
3 1 4 1 5 9 2


Output

3


Input

15 10
1 5 6 10 11 11 11 20 21 25 25 26 99 99 99


Output

6
        #include <bits/stdc++.h>
        using namespace std;
   #define int long long
const int MAX = 510000;
const int MOD = 1000000007;


     signed main(){
 int n,m,x;
 cin>>n>>m;
 vector<int> v[m];
 for(int i=0;i<n;i++){
      cin>>x;
      v[x%m].push_back(x);
 }
 int ans=0;
 for(int i=0;2*i<=m;i++){
      if(2*i%m==0){
           ans+=v[i].size()/2;
           continue;
      }
        int k=0;
      if(v[i].size()>v[m-i].size()){
         
           sort(v[i].begin(),v[i].end());
           for(int j=1;j<v[i].size();j++){
                if(v[i][j]==v[i][j-1]){
                     k++;
                     v[i][j]=-1;
                }
           }
           ans+=v[m-i].size()+min(signed(v[i].size()-v[m-i].size())/2,signed(k));
      }
       if(v[i].size()<v[m-i].size()){
         
           sort(v[m-i].begin(),v[m-i].end());
           for(int j=1;j<v[m-i].size();j++){
                if(v[m-i][j]==v[m-i][j-1]){
                     k++;
                     v[m-i][j]=-1;
                }
           }
           ans+=v[i].size()+min(signed(v[m-i].size()-v[i].size())/2,signed(k));
      }
       if(v[i].size()==v[m-i].size())ans+=v[i].size();

 }
 cout<<ans<<endl;


 }






    





      

        
