Record
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int Mod = 1e9 + 7;
int a, b, c, d, e, f, g, h;
string n, m;
int calMod(string x){
int res = 0, pw = 1;
for(int i = x.size() - 1; i >= 0; i--){
res = res + pw * (x[i] - '0') % Mod;
res %= Mod;
pw = pw * 10ll % Mod;
}
return res;
}
int qpow(int x, int y){
int res = 1ll;
while(y){
if(y & 1) res = res * x % Mod;
x = x * x % Mod;
y = y >> 1ll;
}
return res;
}
signed main(){
cin >> n >> m;
cin >> a >> b >> c >> d;
int e = qpow(a, (calMod(m) - 1 + Mod) % Mod) % Mod;
int f = (qpow(a, (calMod(m) - 1 + Mod) % Mod) - 1 + Mod) % Mod;
f = f * b % Mod * qpow(a - 1, Mod - 2) % Mod;
if(a == 1) f = (calMod(m) - 1 + Mod) % Mod * b % Mod;
e *= c, f *= c;
e %= Mod, f %= Mod;
f += d; f %= Mod;
int g = qpow(e, (calMod(n) - 1 + Mod) % Mod) % Mod;
int h = (qpow(e, (calMod(n) - 1 + Mod) % Mod) - 1 + Mod) % Mod;
h = h * f % Mod * qpow(e - 1, Mod - 2) % Mod;
if(e == 1) h = (calMod(n) - 1 + Mod) % Mod * f % Mod;
int resa = qpow(a, (calMod(m) - 1 + Mod) % Mod) % Mod * (g + h) % Mod;
int resb = (qpow(a, (calMod(m) - 1 + Mod) % Mod) - 1 + Mod) % Mod;
resb = resb * b % Mod * qpow(a - 1, Mod - 2) % Mod;
if(a == 1) resb = (calMod(m) - 1 + Mod) % Mod * b % Mod;
cout << (resa + resb) % Mod << endl;
return 0;
}