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;


const int N=1e5+19;
 
int A[N],B[N],C[N];
int n,m,res;


int IN(){
	int c,f,x;
	while (!isdigit(c=getchar())&&c!='-');c=='-'?(f=1,x=0):(f=0,x=c-'0');
	while (isdigit(c=getchar())) x=(x<<1)+(x<<3)+c-'0';return !f?x:-x;
}

void work(int &x,int &y){
	int tmp=min(x,y);
	x-=tmp,y-=tmp,res+=tmp;
}

int main(){
	n=IN();m=IN();
	for(int i=0;i<n;i++){
		A[IN()]++;
	}
	for(int i=0;i<N;i++){
		B[i%m]+=A[i]%2;
		C[i%m]+=A[i]-A[i]%2;
	}
	for (int i=1;2*i<m;i++){
		work(B[i],B[m-i]);
		work(B[i],C[m-i]);
		work(C[i],B[m-i]);
		res+=C[i]/2;
		res+=C[m-i]/2;
	}
	if (m%2==0)
		res+=(B[m/2]+C[m/2])/2;
	
	res += (B[0]+C[0])/2;
	
	printf("%d\n",res);
	return 0;
}