#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; using mint=modint1000000007; int main() { int n;cin>>n; ll k;cin>>k; if(k==1){ cout<<(mint(2).pow(n)-1).val()<>a[i]; a[i]%=k; } map dp; dp[1]=1; for(int i=0; i ndp=dp; for(auto p:dp){ ll g=gcd(k, p.first*a[i]%k); ndp[g]+=p.second; } swap(dp, ndp); } cout<