from collections import *
import sys

sys.setrecursionlimit(10 ** 6)
int1 = lambda x: int(x) - 1
p2D = lambda x: print(*x, sep="\n")
def II(): return int(sys.stdin.readline())
def MI(): return map(int, sys.stdin.readline().split())
def MF(): return map(float, sys.stdin.readline().split())
def LI(): return list(map(int, sys.stdin.readline().split()))
def LF(): return list(map(float, sys.stdin.readline().split()))
def LLI(rows_number): return [LI() for _ in range(rows_number)]

def com(com_n, com_r):
    return fac[com_n] * inv[com_r] * inv[com_n - com_r] % md

# combinationの準備
# md>n_maxの条件
md = 10 ** 9
n_max = 10005
fac = [1]
k_fac_inv = 1
for i in range(1, n_max + 1):
    k_fac_inv = k_fac_inv * i
    fac.append(k_fac_inv)

def com(com_n, com_r):
    return fac[com_n] // fac[com_r] // fac[com_n - com_r] % md

def main():
    n = II()
    m = II()
    n //= 1000
    hit = n % m
    print(com(m, hit))

main()