""" 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)