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;

int sol, N, M, ap[100009], ap2[100009];

int cntP (int i)
{
    int curr = 0;
    for (int j=i; j<=100000; j+=M)
        curr += ap[j] / 2;
    return curr;
}

int main ()
{
//freopen ("input", "r", stdin);
//freopen ("output", "w", stdout);

scanf ("%d %d", &N, &M);
for (int i=1; i<=N; i++)
{
    int x;
    scanf ("%d", &x), ap[x] ++, ap2[x % M] ++;
}
for (int i=0; i <= M - i; i++)
{
    if (i == M - i || i == 0)
    {
        sol += ap2[i] / 2;
        continue;
    }
    int x = cntP (i), y = cntP (M - i);
    if (ap2[i] <= ap2[M - i]) sol += ap2[i], sol += min (y, (ap2[M - i] - ap2[i]) / 2);
    else sol += ap2[M - i], sol += min (x, (ap2[i] - ap2[M - i]) / 2);
}
printf ("%d\n", sol);
return 0;
}
