I found an interesting problem on https://atcoder.jp/contests/abc105/tasks/abc105_d:
There are N boxes arranged in a row from left to right. The i-th box from the left contains A_i candies.
You will take out the candies from some consecutive boxes and distribute them evenly to M children.
Such being the case, find the number of the pairs (l, r) that satisfy the following:
 - l and r are both integers and satisfy 1 \leq l \leq r \leq N.
 - A_l + A_{l+1} + ... + A_r is a multiple of M.

-----Constraints-----
 - All values in input are integers.
 - 1 \leq N \leq 10^5
 - 2 \leq M \leq 10^9
 - 1 \leq A_i \leq 10^9

-----Input-----
Input is given from Standard Input in the following format:
N M
A_1 A_2 ... A_N

-----Output-----
Print the number of the pairs (l, r) that satisfy the conditions.
Note that the number may not fit into a 32-bit integer type.

-----Sample Input-----
3 2
4 1 5

-----Sample Output-----
3

The sum A_l + A_{l+1} + ... + A_r for each pair (l, r) is as follows:
 - Sum for (1, 1): 4
 - Sum for (1, 2): 5
 - Sum for (1, 3): 10
 - Sum for (2, 2): 1
 - Sum for (2, 3): 6
 - Sum for (3, 3): 5
Among these, three are multiples of 2.

I tried it in Python, but could not do it. Can you solve it?
N,M = list(map(int,input().split()))
A = list(map(int,input().split()))

B = [0 for i in range(N+1)]

for i in range(N):
    B[i+1] += B[i] + A[i]
    B[i+1] %= M

from collections import Counter

counterB = Counter(B)

ans = 0
for v in list(counterB.values()):
    ans += v*(v-1)//2

print(ans)