/* -*- coding: utf-8 -*- * * 2517.cc: No.2517 Right Triangles on Circle - yukicoder */ #include #include using namespace std; /* constant */ const int MAX_N = 300000; /* typedef */ typedef long long ll; /* global variables */ int as[MAX_N * 2]; /* subroutines */ /* main */ int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) scanf("%d", as + i), as[i] %= m; if (m & 1) { puts("0"); return 0; } int h = m / 2, n2 = n * 2; sort(as, as + n); for (int i = 0; i < n; i++) as[n + i] = m + as[i]; ll sum = 0; for (int i = 0, j = 0; i < n; i++) { while (as[j] - as[i] < h) j++; if (as[j] - as[i] == h) sum += n - 2; } printf("%lld\n", sum / 2); return 0; }