#include <iostream>
#include <cmath>
using namespace std;
const int mod=1e9+7;
int gia_tri(int x,int y,int mod)
{
long long res=y;
long long base=x;
int gia_tri=1;
while (res>0)
{
if(res%2==1)
{
gia_tri=gia_tri*base%mod;
}
base=base*base%mod;
res/=2;
}
return gia_tri;
}
int main()
{
long long A,sum;
int N;
cin>>A>>N;
if(A==1)
{
cout<<(1+N)%mod;
}
else
{
long long tu=(gia_tri(A,N+1,mod)-1+mod)%mod;/// +mod de gia tri luon duong - VD: -3%7=7 hay 4%7=4 vĂ (4+7)%7=4
long long mau=(gia_tri(A-1,mod-2,mod))%mod;
int dap_an=tu*mau%mod;
cout<<dap_an;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtb2Q9MWU5Kzc7CgppbnQgZ2lhX3RyaShpbnQgeCxpbnQgeSxpbnQgbW9kKQp7Cglsb25nIGxvbmcgcmVzPXk7Cglsb25nIGxvbmcgYmFzZT14OwoJaW50IGdpYV90cmk9MTsKCXdoaWxlIChyZXM+MCkKCXsKCQlpZihyZXMlMj09MSkKCQl7CgkJCWdpYV90cmk9Z2lhX3RyaSpiYXNlJW1vZDsKCQl9CgkJYmFzZT1iYXNlKmJhc2UlbW9kOwoJCXJlcy89MjsKCX0KCXJldHVybiBnaWFfdHJpOwp9CgppbnQgbWFpbigpCnsKCWxvbmcgbG9uZyBBLHN1bTsKCWludCBOOwoJY2luPj5BPj5OOwoJaWYoQT09MSkKCXsKCQljb3V0PDwoMStOKSVtb2Q7Cgl9CgllbHNlCgl7CgkJbG9uZyBsb25nIHR1PShnaWFfdHJpKEEsTisxLG1vZCktMSttb2QpJW1vZDsvLy8gK21vZCBkZSBnaWEgdHJpIGx1b24gZHVvbmcgLSBWRDogLTMlNz03IGhheSA0JTc9NCB2w6AgKDQrNyklNz00CgkJbG9uZyBsb25nIG1hdT0oZ2lhX3RyaShBLTEsbW9kLTIsbW9kKSklbW9kOwoJCWludCBkYXBfYW49dHUqbWF1JW1vZDsKCQljb3V0PDxkYXBfYW47Cgl9Cn0K