#include<bits/stdc++.h>
using namespace std;
long long base[3][3],ans[3][3],a[3][3];
long long p,q,a1,a2,n,m;
void work1(){
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
a[i][j]=ans[i][j];
ans[i][j]=0;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=2;j++){
for(int k=1;k<=2;k++){
ans[i][j]+=base[i][k]*a[k][j];
ans[i][j]%=m;
}
}
}
}
void work2(){
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
a[i][j]=base[i][j];
base[i][j]=0;
}
}
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
for(int k=1;k<=2;k++){
base[i][j]+=a[i][k]*a[k][j];
base[i][j]%=m;
}
}
}
}
int main(){
scanf("%lld%lld%lld%lld%lld%lld",&p,&q,&a1,&a2,&n,&m);
base[1][1]=p%m;
ans[1][1]=p%m;
base[1][2]=1;
ans[1][2]=1;
base[2][1]=q%m;
ans[2][1]=q%m;
n-=2;
a1%=m;
a2%=m;
if(n==1){
printf("%lld",a1);
return 0;
}
else if(n==2){
printf("%lld",a2);
return 0;
}
while(n){
if(n%2==1){
work1();
}
work2();
n/=2;
}
long long da=ans[1][1];
da%=m;
printf("%lld",da);
return 0;
}