#include <bits/stdc++.h> #include <iostream> #include <random> using namespace std; using ull = long long; ull modpow(ull x, ull n, ull mod){ ull ret = 1; while(n){ if(n & 1){ ret = modpow(ret, x, mod); } x = modpow(x, x, mod); n >>= 1; } return ret; } int main(){ ull a,b; cin>>b>>a; ull mod=1000000007; a=a%mod; ull s=(a*(a+3)%mod); ull k=(a*(a+1)%mod); cout<<modpow(s,b,mod)%mod-modpow(k,b,mod)%mod<<endl; }