""" modで考えるのはそう (1)は xをx+iにする (2)は xをx*iにする どっちも一意だが… 0に何懸けても0 →足してから×ことになる iとPは互いに素 iが余り0になるにはP回足す必要あり? i * (i*i*i* ・・・ + i * i * … + 1 + 1 + … ) そもそも iが指定されてないやん! 足し算の方は互いに影響 掛け算は、mod0にとっては自分、そうでなければ全て同値 """ P,K = map(int,input().split()) zero = 1 other = 0 mod = 10**9+7 for i in range(K): nz = 0 no = 0 #足し算 nz += (zero + other*(P-1)) % mod no += (zero + other*(P-1)) % mod #掛け算 #print (nz,no) nz += zero * P + other * (P-1) no += other * (P-1) zero = nz % mod other = no % mod #print (zero,other) print (zero)