Problem:
Score : 700 points

Problem Statement

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.

Sample Input 1

7 5
3 1 4 1 5 9 2

Sample Output 1

3

Three pairs (3,2), (1,4) and (1,9) can be created.

It is possible to create pairs (3,2) and (1,1), but the number of pairs is not maximized with this.

Sample Input 2

15 10
1 5 6 10 11 11 11 20 21 25 25 26 99 99 99

Sample Output 2

6

Solution in Python (3.4.3) (judge verdict: Accepted)

from collections import Counter

n,m = map(int, input().split())
x = list(map(int, input().split()))
mod_count = [0] * m
pair = [0] * m
count = Counter(x)

for i in x:
  mod_count[i%m] += 1
for k,v in count.items():
  pair[k%m] += v // 2
ans = mod_count[0] // 2
if m % 2 == 0:
  ans += mod_count[m//2] // 2
for i in range(1,(m+1)//2):
  a1,a2 = mod_count[i], pair[i]
  b1,b2 = mod_count[m-i], pair[m-i]
  if a1 > b1:
    if a1 - a2 * 2 >= b1:
      ans += a2 + b1
    else:
      ans += (a1 + b1) // 2
  else:
    if b1 - b2 * 2 >= a1:
      ans += b2 + a1
    else:
      ans += (a1+b1) // 2
print(ans)