import java.io.*;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main {
static BigInteger[][] answers;
public static void main(String... args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer tokenizer = new StringTokenizer(br.readLine());
int n = Integer.parseInt(tokenizer.nextToken());
int k = Integer.parseInt(tokenizer.nextToken());
answers = new BigInteger[n+1][k+1];
br.close();
BigInteger result = bino(n, k) ;
bw.write(String.valueOf(result.mod(BigInteger.valueOf(10007))));
bw.flush();
bw.close();
}
static BigInteger bino(int n, int k) {
if (answers[n][k] != null) {
return answers[n][k];
}
if (k == 0 || n == k) {
answers[n][k] = BigInteger.ONE;
} else {
answers[n][k] = bino(n - 1, k - 1).add(bino(n - 1, k));
}
return answers[n][k];
}
}
public static void main(String... args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer tokenizer = new StringTokenizer(br.readLine());
int n = Integer.parseInt(tokenizer.nextToken());
int k = Integer.parseInt(tokenizer.nextToken());
int[][] answers = new int[n+1][n+1];
br.close();
answers[0][0] = 1;
for (int i = 1; i < n + 1; i++) {
answers[i][0] = answers[i][i] = 1;
for (int j = 1; j < i; j++) {
answers[i][j] = answers[i-1][j] + answers[i-1][j-1];
answers[i][j] %= 10007;
}
}
bw.write(String.valueOf(answers[n][k]));
bw.flush();
bw.close();
}