from bisect import bisect_left, bisect_right from collections import defaultdict from itertools import combinations import sys def printe(*args, end="\n", **kwargs): print(*args, end=end, file=sys.stderr, **kwargs) def main(): N, P, Q = map(int, input().split()) A = list(map(int, input().split())) A.sort() mod_P_pow_5 = defaultdict(list) for a_elm in A: mod_P_pow_5[pow(5, a_elm, P)].append(a_elm) ctr = 0 for a, b, c in combinations(A, 3): c_mod = (pow(10, a, P) + pow(9, b, P) + pow(7, c, P)) % P rest_mod = (Q - c_mod) % P ctr += len(mod_P_pow_5[rest_mod]) - \ bisect_right(mod_P_pow_5[rest_mod], c) print(ctr) if __name__ == "__main__": main()