import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines import numpy as np N,K = map(int,read().split()) MOD = 10 ** 9 + 7 def make_power(a, L, MOD=MOD): B = L.bit_length() x = np.empty((1<> 15 gl = g & (1 << 15) - 1; gh = g >> 15 conv = lambda f,g: ifft(fft(f,fft_len) * fft(g,fft_len))[:L] x = conv(fl, gl) % MOD y = conv(fl+fh, gl+gh) % MOD z = conv(fh, gh) % MOD a, b, c = map(lambda x: (x + .5).astype(np.int64), [x,y,z]) return (a + ((b - a - c) << 15) + (c << 30)) % MOD def fps_inv(F,MOD=MOD): L = len(F) i = (L-1).bit_length() N = 1 << i F = np.resize(F,N) n = 1 x = pow(int(F[0]),MOD-2,MOD) R = np.array([x],np.int64) while n < N: RF = fft_convolve(R,F[:n+n])[:n+n] RRF = fft_convolve(R,-RF)[:n+n] RRF[:n] += R+R R = RRF; R %= MOD n += n return R[:L] def fps_exp(h,MOD=MOD): # 面倒なので2べきに L = len(h) i = (L-1).bit_length() N = (1 << i) h = np.resize(h,N) dh = np.empty_like(h) dh[0:N-1] = h[1:N] * np.arange(1,N,dtype=np.int64) % MOD f = np.zeros_like(h); g = np.zeros_like(h) f[:2] = np.array([1,h[1]],np.int64); g[0] = 1; m = 2 while m <= N//2: fg = fft_convolve(f[:m],g[:m],MOD)[:m] fgg = fft_convolve(fg,g[:m],MOD)[:m] g[:m] *= 2; g[:m] -= fgg; g %= MOD q = dh[:m-1] s = np.zeros(m+m,np.int64); s[1:m] = f[1:m] * np.arange(1,m,dtype=np.int64) % MOD r = fft_convolve(f[:m],q,MOD) s[1:1+len(r)] -= r s[0:m] += s[m:m+m] s = s[:m] % MOD t = fft_convolve(g[:m],s,MOD)[:m] t *= inv[m:m+m]; t %= MOD u = h[m:m+m] - t; u %= MOD v = fft_convolve(f,u,MOD)[:m] f[m:m+m] += v m *= 2 return f[:L] def Bernoulli(N,MOD = MOD): den = fact_inv[1:N+1] B = fps_inv(den) B *= fact[:len(B)]; B %= MOD return B def kth_power_sum_polynomial(k,MOD=MOD): B = Bernoulli(k+1,MOD) S = np.zeros(k+2,np.int64) C = fact[k] * fact_inv[1:k+2] % MOD * fact_inv[:k+1][::-1] % MOD S[1:] = B[::-1] * C S[(K&1)::2] *= (-1) return S%MOD fact, fact_inv = make_fact(10**5) S = kth_power_sum_polynomial(K) N %= MOD # 今回の状況だと分母にMODが入らないので正当 power = make_power(N,len(S)) answer = (S * power % MOD).sum() % MOD print(answer)