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 <cstring>
#include <vector>
#include <deque>
#include <queue>
#include <array>
#include <set>
#include <map>
#include <cmath>
#include <algorithm>
#include <numeric>
#include <cassert>
#include <utility>
#include <functional>
#include <bitset>
#include <cstdint>

using namespace std;
using lli = long long int;
using i64 = int64_t;
template<class T, class U> void init_n(vector<T>& v, size_t n, U x) 
{ v = vector<T>(n, x); }
template<class T> void init_n(vector<T>& v, size_t n) { init_n(v, n, T()); }
template<class T> void read_n(vector<T>& v, size_t n, size_t o = 0) 
{ v = vector<T>(n+o); for (lli i=o; i<n+o; ++i) cin >> v[i]; }
template<class T> void read_n(T a[], size_t n, size_t o = 0)
{ for (lli i=o; i<n+o; ++i) cin >> a[i]; }
template<class T> T gabs(const T& x) { return max(x, -x); }
#define abs gabs

i64 n, m, c[100001], d[100001], s[100001];
int main() {
  cin >> n >> m;
  for (i64 i = 0; i < n; ++i) {
    i64 x; cin >> x;
    c[x]++;
  }

  for (i64 x = 1; x <= 100000; ++x) {
    s[x % m] += c[x];
    d[x % m] += c[x] % 2;
  }

  i64 ans = s[0] / 2;
  if (m % 2 == 0) ans += s[m / 2] / 2;

  for (i64 i = 1; i <= (m - 1) / 2; ++i) {
    i64 x = i, y = m - i;
    if (s[x] <= s[y]) {
      ans += s[x] + min(s[y] - d[y], s[y] - s[x]) / 2;
    } else {
      ans += s[y] + min(s[x] - d[x], s[x] - s[y]) / 2;
    }
  }
  cout << ans << '\n';
  return 0;
}
