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
#define FOR(i,a,b) for(int (i)=(a);(i)<(b);(i)++)
#define REP(i,n) FOR(i,0,n)

typedef long long ll;

template <class T = ll> T in() { T x; cin >> x; return (x); }

signed main() {
	ll n,m;
	cin >> n >> m;

	ll res[m];//あまりごとの個数
	ll dis[m];//あまりごとの緩衝材
	ll yoo[100010];//緩衝材

	REP (i,m) {res[i] = 0;dis[i] = 0;}
	REP (i,100010) {yoo[i] = 0;}
	REP (i,n) {ll x = in();res[x%m]++;yoo[x]++;}
	REP (i,100010) {dis[i%m] += (yoo[i] / 2) * 2;}

	ll ans = 0;
	ans += res[0] / 2;

	FOR (i,1,(m-1)/2+1) {
		ll A = i,B = m - i;// res[A] < res[B];
		if (res[A] == res[B]) {ans += res[A];continue;}
		else if (res[A] > res[B]) swap(A,B);
		ans += res[A] + min((res[B] - res[A]),dis[B]) / 2;
	}

	if (m%2 == 0) ans += res[m/2] / 2;
	cout << ans << endl;
}