N,M,K = map(int,input().split()) MOD = 998244353 if N==1: print(M) exit() mat = [[int(abs(M//(i+1) - M//(j+1)) <= K) for j in range(M)] for i in range(M)] def mul(l,r): ret = [[0]*M for _ in range(M)] for i,row in enumerate(l): for j,col in enumerate(zip(*r)): ret[i][j] = sum(a*b for a,b in zip(row,col)) % MOD return ret X = mat Z = [[int(i==j) for j in range(M)] for i in range(M)] N -= 1 while N: if N%2: Z = mul(Z,X) X = mul(X,X) N //= 2 print(sum(sum(row)%MOD for row in Z)%MOD)