ll@N,@P,@C,a=(C<1)*N*(N+1)/2,t=1,l;VVI A(1);rep(N){ll@n;if(n)A.back().push_back(n);else A.push_back({});}REP[A](v,A.size()){l=v.size();if(C){unordered_mapc;rep[v](w,l)c[t*C%P]++,a+=c[t=t*w%P];}else a-=l*(l+1)/2;}wt(a);