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 "iostream"
#include "climits"
#include "list"
#include "queue"
#include "stack"
#include "set"
#include "functional"
#include "algorithm"
#include "string"
#include "map"
#include "iomanip"
#include "random"

using namespace std;

const long long int MOD = 1000000007;
const long double EPS = 0.00000001;
const long double PI = 3.1415926535897932384626433;

long long int N, M, K, H, W, L, R;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin >> N >> M;
	vector<int>num(100001);
	vector<int>mod(M);
	for (int i = 0; i < N; i++) {
		cin >> K;
		num[K]++;
		mod[K%M]++;
	}
	int ans = 0;
	ans += mod[0] / 2;
	if (M % 2 == 0) {
		ans += mod[M / 2] / 2;
	}
	for (int i = 1; i < (M+1) / 2; i++) {
		K= min(mod[i], mod[M - i]);
		ans += K;
		vector<int>box;
		vector<int>bag;
		for (int j = i; j <= 100000; j += M) {
			box.push_back(num[j]);
		}
		for (int j = M - i; j <= 100000; j += M) {
			bag.push_back(num[j]);
		}
		L = 0;
		R = 0;
		for (int j = 0; j < box.size(); j++) {
			if (L == K) {
				break;
			}
			if (box[j] % 2) {
				box[j]--;
				L++;
			}
		}
		for (int j = 0; j < bag.size(); j++) {
			if (R == K) {
				break;
			}
			if (bag[j] % 2) {
				bag[j]--;
				R++;
			}
		}
		sort(box.begin(), box.end());
		reverse(box.begin(), box.end());
		sort(bag.begin(), bag.end());
		reverse(bag.begin(), bag.end());
		for (int j = 0; j < box.size(); j++) {
			if (L == K) {
				break;
			}
			int fig = min((long long int)box[j], K - L);
			L += fig;
			box[j] -= fig;
		}
		for (int j = 0; j < bag.size(); j++) {
			if (R == K) {
				break;
			}
			int fig = min((long long int)bag[j], K - R);
			R += fig;
			bag[j] -= fig;
		}
		for (int j = 0; j < box.size(); j++) {
			ans += box[j] / 2;
		}
		for (int j = 0; j < bag.size(); j++) {
			ans += bag[j] / 2;
		}
	}
	cout << ans << endl;
	return 0;
}