#include using namespace std; #define int long long const int MOD=1e9; int pw(int n,int k){ assert(k>=0); int res=1; while(k){ if(k&1)(res*=n)%=MOD; (n*=n)%=MOD; k>>=1; } return res; } typedef pair P; vector

pri[12345]; int nCk(int n,int k){ map m; for(int i=1;i<=n;i++)for(P p:pri[i])m[p.first]+=p.second; for(int i=1;i<=n-k;i++)for(P p:pri[i])m[p.first]-=p.second; for(int i=1;i<=k;i++)for(P p:pri[i])m[p.first]-=p.second; int res=1; for(auto p:m)(res*=pw(p.first,p.second))%=MOD; return res; } signed main(){ for(int i=2;i<12345;i++){ if(pri[i].size())continue; for(int j=i;j<12345;j+=i){ int tmp=j,c=0; while(tmp%i==0)tmp/=i,c++; pri[j].push_back(P(i,c)); } } int n,m;cin>>n>>m; n/=1000; n%=m; cout<