#include #include #include typedef long long ll; using namespace std; const ll MOD=1e9+7; ll powmod(ll a, ll k, ll mod){ if(a==0) return 0; ll ap=a, ans=1; while(k){ if(k&1){ ans*=ap; ans%=mod; } ap=ap*ap; ap%=mod; k>>=1; } return ans; } ll inv(ll a, ll mod){ return powmod(a, mod-2, mod); } ll gcd(ll a, ll b){ if(b==0) return a; return gcd(b, a%b); } int main() { int n, k; ll b, p; cin>>p>>n>>k>>b; vector a(n); k=gcd(k, p-1); for(int i=0; i>a[i]; ll r; for(r=1; r q(p-1); vector qi(p); q[0]=1; for(int i=1; i dp(p); dp[0]=1; for(int i=0; i tmp=dp; vector s(k); for(int j=0; j=p) x-=p; if(x==0) (tmp[0]+=dp[j]*(p-1))%=MOD; else (s[qi[x]]+=dp[j]*k)%=MOD; } for(int j=1; j=MOD) tmp[j]-=MOD; } swap(tmp, dp); } cout<