#include #include using namespace std; int main(){ using mint=atcoder::modint; int n,p,c; cin>>n>>p>>c; mint::set_mod(p); vector a(n); vector> g; vector vec; for (int i=0;i>x; a[i]=x; if (x==0&&!vec.empty()) g.push_back(vec),vec.clear(); if (x) vec.push_back(x); } if (!vec.empty()) g.push_back(vec); long long ans=0; if (c==0){ ans=(long long)(n+1)*n/2; for (auto vec:g) ans-=((long long)(vec.size())+1)*(int)vec.size()/2; } else{ mint cinv=mint(c).inv(); auto f=[&](vector b){ int m=b.size(); map mp; mint prod=1; mp[1%p]=1; for (int i=0;i