#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 12;
const long long oo = 1e18;
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int dx[] = {-1, 0, 0, 1};
int dy[] = {0, -1, 1, 0};
int n;
long long Mod, k, ret;
long long a[N], b[N];
map<long long, int> d, cnt;
long long Pow(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return a;
  while (b) {
    long long t = Pow(a, b / 2) % Mod;
    t = (t * t) % Mod;
    if (b % 2)
      return (t * a) % Mod;
    else
      return t;
  }
  return 0;
}
int main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);
  cin >> n >> Mod >> k;
  for (int _ = 1, __ = n, i = _; i <= __; i++) {
    long long x;
    cin >> x;
    long long t = (Pow(x, 4) - (k * x) % Mod + Mod * Mod) % Mod;
    ret += d[t];
    if ((4 * Pow(x, 4)) % Mod != k) ret -= cnt[x];
    d[t]++;
    cnt[x]++;
  }
  cout << ret;
}
