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<set>
#include<map>
#include<cmath>
#include<queue>
#include<bitset>
#include<string>
#include<cstdio>
#include<cctype>
#include<cassert>
#include<cstdlib>
#include<cstring>
#include<sstream>
#include<iostream>
#include<algorithm>

#define For(i,x,y) for (int i=x;i<y;i++)
#define pb push_back
#define mp make_pair
#define fi first
#define se second

#define dprintf(...) fprintf(stderr,__VA_ARGS__)
using namespace std;

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;
}

typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef vector<int> Vi;

const int N=1e5+19;

int A[N],B[N],C[N];
int n,m,res;

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

int main(){
	n=IN();m=IN();
	For(i,0,n) A[IN()]++;
	For(i,0,N){
		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);
}