#include using namespace std; #define rep(i,j,n) for(int i=j;i pi; template using vt = vector; template using vvt = vector>; i64 gcd(i64 n, i64 m) {return (m == 0? n : gcd(m, n % m));} i64 lcd(i64 n, i64 m) {return (n / gcd(n, m) * m);} int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int main() { cin.tie(0); ios::sync_with_stdio(false); i64 n; int m; cin >> n >> m; int k = (n / 1000) % m; vvt pascal(m + 1); pascal[0] = vt(1, 1); pascal[1] = vt(2, 1); rep(i, 2, m + 1) { pascal[i] = vt(i + 1, -1); pascal[i][0] = pascal[i][i] = 1; rep(j, 1, i + 1) { if(pascal[i][j] != -1) break; pascal[i][j] = pascal[i][i - j] = (pascal[i - 1][j - 1] + pascal[i - 1][j]) % mod; } } cout << pascal[m][k] << endl; }