using System; using System.Linq; using System.Collections.Generic; class Program { static void Main() { var n = rl(); var m = rl(); var mod = 1000000000; n /= 1000; n = n % m; var pas = new long[m + 1, m + 1]; for(int i = 0; i < m + 1; i++) { for(int j = 0; j < m + 1; j++) { if (j == 0 || i == j) { pas[i, j] = 1; continue; } if (j > i) continue; pas[i, j] = pas[i, j] = (pas[i - 1, j - 1] + pas[i - 1, j]) % mod; } } Console.WriteLine(pas[m, n]); } #region Scan static int ri() { return int.Parse(Console.ReadLine()); } static long rl() { return long.Parse(Console.ReadLine()); } static double rd() { return double.Parse(Console.ReadLine()); } static string rs() { return Console.ReadLine(); } static int[] ria() { return Console.ReadLine().Trim().Split().Select(int.Parse).ToArray(); } static long[] rla() { return Console.ReadLine().Trim().Split().Select(long.Parse).ToArray(); } static double[] rda() { return Console.ReadLine().Trim().Split().Select(double.Parse).ToArray(); } static string[] rsa() { return Console.ReadLine().Trim().Split(); } static void mul(out int a, out int b) { var arr = ria(); a = arr[0]; b = arr[1]; } public void mul(out int a, out int b, out int c) { var arr = ria(); a = arr[0]; b = arr[1]; c = arr[2]; } public void mul(out int a, out int b, out int c, out int d) { var arr = ria(); a = arr[0]; b = arr[1]; c = arr[2]; d = arr[3]; } #endregion }