rt
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long
ll p , q , a1 , a2 , n , mod ;
struct mat{
ll g[4][4] ;
};
mat ans , a ;
mat mul(mat a , mat b){
mat ans ;
for(int i = 1 ; i <= 2 ; i++)
for(int j = 1 ; j <= 2 ; j++)
ans.g[i][j] = 0 ;
for(int i = 1 ; i <= 2 ; i++)
for(int j = 1 ; j <= 2 ; j++)
for(int k = 1 ; k <= 2 ; k++)
ans.g[i][j] += ( a.g[i][k] * b.g[k][j]) % mod ;
return ans ;
}
mat qpow(mat a , ll x){
while(x){
if(x & 1) ans = mul(ans , a) ;
a = mul(a , a) ;
x >>= 1 ;
}
return ans ;
}
int main(){
scanf("%lld %lld %lld %lld %lld %lld" , &p , &q , &a1 , &a2 , &n , &mod);
for(int i = 1 ; i <= 2 ; i++)
for(int j = 1 ; j <= 2 ; j++){
ans.g[i][j] = 0 ;
a.g[i][j] = 0 ;
}
a.g[1][1] = p ;
a.g[1][2] = 1 ;
a.g[2][1] = q ;
ans.g[1][1] = a2 , ans.g[1][2] = a1 ;
ans = qpow(a , n - 2) ;
if(n == 1){
cout<<a1 ;
return 0 ;
}else if(n == 2){
cout<<a2 ;
return 0 ;
}else{
//for(int i = 1 ; i <= 2 ; i++)
//{
// for(int j = 1 ; j <= 2 ; j++)
// cout<<ans.g[i][j] % mod <<" " ;
// cout<<endl ;
//}
cout<<ans.g[1][1] % mod;
}
return 0 ;
}