"""

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)