#ifndef ONLINE_JUDGE #define _GLIBCXX_DEBUG #endif #include #include using namespace std; using ll=long long; using ld=long double; using st=string; using P=pair; typedef atcoder::modint mint; ll inf=9e18; template auto vec(const ll (&sizes)[s], const T& init = T()){ if constexpr(i < s) return vector(sizes[i], vec(sizes, init)); else return init; } int main(){ ll n,x,q; mint k; cin>>n>>x; map m; m[x]=1; for(ll i=0;i>q; map next; k=0; for(auto j:m){ if(j.first%q==0){ next[j.first/q]+=j.second; } k+=j.second; } next[q]+=k; swap(next,m); // for(auto j:m){ // cout<