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 MAXN = 1e5 + 10;

int n, m, ans, cnt[MAXN], cc[MAXN];
vector<int>	vec[MAXN];

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> n >> m;
	for (int i = 0; i < n; i++){
		int x;	cin >> x;	cnt[x]++;
		vec[x % m].push_back(x);
	}
	for (int i = 0; i < m; i++)
		cc[i] = vec[i].size();
	for (int i = 0; i < MAXN; i++){
		sort(vec[i].begin(), vec[i].end());
		vec[i].resize(unique(vec[i].begin(), vec[i].end()) - vec[i].begin());
	}

	ans = cc[0]/2;
	
	for (int i = 1; i < m; i++){
		if (m-i < i)	continue;
		if (m-i == i){
			ans += cc[i]/2;
			continue;
		}

		ans += (cc[i] + cc[m-i])/2;

		int c1 = 0, c2 = 0;
		for (int u:vec[i])
			if (cnt[u]&1)	c1++;
		for (int u:vec[m-i])
			if (cnt[u]&1)	c2++;

		int mn = min(c1, c2);
		int t = 0;
		for (int u:vec[i])
			if (cnt[u]&1){
				cnt[u]--;
				t++;
				if (t == mn)	break;
			}
		t = 0;
		for (int u:vec[m-i])
			if (cnt[u]&1){
				cnt[u]--;
				t++;
				if (t == mn)	break;
			}

		c1 -= mn;
		c2 -= mn;
		cc[i] -= mn;
		cc[m - i] -= mn;

		if (c1 & 1)	c1--;
		if (c2 & 1)	c2--;

		if (c1){
			if (cc[m-i] < c1)
				ans -= (c1 - cc[m-i])/2;
		}
		else if (c2){
			if (cc[i] < c2)
				ans -= (c2 - cc[i])/2;
		}
	}

	cout << ans << "\n";
	return 0;
}
