mapm; m[1]=1; ll@n,@p,@c,b=1,z=0; rep(n){ ll@a; if(a==0){ m.clear(); m[1]=1; b=1; if(!c){ ++z; } }else{ if(c){ b=b*a%p; z+=m[c*get_inv_mod(b,p)%p]; m[b]+=1; } } } wt(c?z:z*(z+1)/1);