"""

https://yukicoder.me/problems/no/1181

それぞれの数字において、選ぶ1~K、選ばない*1があるので

"""

N,K = map(int,input().split())

s = (1+K) * K // 2 + 1*K
t = (1+K) * K // 2
mod = 10**9+7
print ((pow(s,N,mod)-pow(t,N,mod)) % mod)