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 <cstdio>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <cassert>
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <bitset>
#include <string>
#include <algorithm>
#include <utility>
#define llint long long
#define inf 1e18
#define rep(x, s, t) for(llint (x) = (s); (x) < (t); (x)++)
#define Rep(x, s, t) for(llint (x) = (s); (x) <= (t); (x)++)
#define chmin(x, y) (x) = min((x), (y))
#define chmax(x, y) (x) = max((x), (y))
#define mod 998244353
using namespace std;
typedef pair<llint, llint> P;
typedef pair<llint, P> E;

llint n, m;
llint x[100005];
vector<llint> vec[100005];

llint calc(vector<llint> &vec)
{
	sort(vec.begin(), vec.end());
	llint ret = 0;
	for(int i = 0; i < vec.size(); i++){
		if(i+1 >= vec.size()) break;
		if(vec[i] == vec[i+1]){
			ret++;
			i++;
		}
	}
	return ret;
}

int main(void)
{
	cin >> n >> m;
	for(int i = 1; i <= n; i++){
		cin >> x[i];
		vec[x[i]%m].push_back(x[i]);
	}
	
	llint ans = 0;
	for(int i = 0; i <= m/2; i++){
		llint x = (m-i)%m;
		if(i == x){
			ans += vec[i].size()/2;
			continue;
		}
		if(vec[i].size() > vec[x].size()) swap(vec[i], vec[x]);
		ans += vec[i].size();
		ans += min(((llint)vec[x].size() - (llint)vec[i].size()) / 2, calc(vec[x]));
	}
	cout << ans << endl;
	
	
	return 0;
}
