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
// Template {{{
#include <bits/stdc++.h>
#define REP(i,n) for(int i=0; i<(int)(n); ++i)
using namespace std;
typedef long long LL;

#ifdef LOCAL
#include "contest.h"
#else
#define dump(x) 
#endif

const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
inline bool valid(int x, int w) { return 0 <= x && x < w; }

void iostream_init() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.setf(ios::fixed);
    cout.precision(12);
}
//}}}

int main(){
    iostream_init();
    int N, M;
    while(cin >> N >> M) {
        map<int, int> raw_count;
        REP(i, N) {
            int x;
            cin >> x;
            raw_count[x] ++;
        }
        map<int, int> count;
        map<int, int> same;
        for(auto p : raw_count) {
            const int k = p.first;
            const int v = p.second;
            count[k % M] += v;
            same[k % M] += v / 2;
        }
        int answer = 0;
        for(int i = 0; i < M; i++) {
            int j = (M - i + M) % M;
            if(i < j) {
                int c1 = count[i];
                int c2 = count[j];
                int max_sub = 0;
                for(int k = 0; k <= min(c1, c2); k ++) {
                    int p1 = k;
                    int p2 = min(same[i], (c1 - k) / 2);
                    int p3 = min(same[j], (c2 - k) / 2);
                    max_sub = max(max_sub, p1 + p2 + p3);
                }
                answer += max_sub;
            } else if(i == j) {
                answer += count[i] / 2;
            }
        }
        cout << answer << endl;
    }
    return 0;
}
