#include #include using namespace std; using ll = long long; using mint = atcoder::modint; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, p, c; cin >> n >> p >> c; vector a(n); for(auto &&v : a) cin >> v; mint::set_mod(p); ll ans = 0; map mp; if(c == 0){ ans += n * (ll)(n + 1) / 2; for(int i = 0; i < n; ){ int p = i; if(a[p] == 0){ i++; continue; } while(i < n && a[i] != 0) i++; ans -= (i - p) * (ll)(i - p + 1) / 2; } }else{ mint mul = 1, divc = mint(c).inv(); mp[1] = 1; for(int i = 0; i < n; i++){ if(a[i] == 0){ mp.clear(); mul = 1; mp[1] = 1; continue; } mul *= mint::raw(a[i]); ans += mp[(mul * divc).val()]; mp[mul.val()]++; } } cout << ans << '\n'; }