#include<iostream>
#define ll long long
using namespace std;
ll m,a,c,x0,n,g,anss,base1[3][3],ans1[3][3];
ll mul(ll a ,ll b){
if(b<0 && a<0){
b=-b,a=-a;
}
else if(b<0){
swap(a,b);
}
ll ans=0,base=a;
while(b>0){
if(b&1){
ans=(ans+base)%m;
}
base=(base+base)%m;
b>>=1;
}
return ans;
}
ll qpow(ll a,ll b){
ll ans=1,base=a;
while(b>0){
if(b&1){
ans=(ans*base)%m;
}
base=(base*base)%m;
b>>=1;
}
return ans%m;
}
void jc(ll a[3][3],ll b[3][3]){
ll c[3][3]={0};
for(int k=1;k<=2;k++){
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
c[i][j]=(c[i][j]+mul(a[i][k],b[k][j]))%m;
}
}
}
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
a[i][j]=c[i][j];
}
}
}
ll ksm(ll n){
ll ans;
base1[1][1]=0,base1[1][2]=1,base1[2][1]=-a,base1[2][2]=a+1;
ans1[1][1]=1,ans1[2][2]=1,ans1[1][2]=0,ans1[2][1]=0;
while(n>0){
if(n&1){
jc(ans1,base1);
}
jc(base1,base1);
n>>=1;
}
return (ans1[1][2])%m;
}
int main(){
cin>>m>>a>>c>>x0>>n>>g;
a=a%m,c=c%m,x0=x0%m;
anss=mul(x0,qpow(a,n))%m;
anss=(anss+mul(c,ksm(n))%m)%m;
cout<<anss%g;
return 0;
}