#include<bits/stdc++.h>
using namespace std;
#define int __int128
struct node
{
int n;
int m[10][10];
};
node A;
node Q;
int mod;
node cheng(node a,node b)
{
node c;
memset(c.m,0,sizeof(c.m));
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
for(int k=1;k<=2;k++)
{
c.m[i][j]=(c.m[i][j]+(a.m[i][k]*b.m[k][j])%mod)%mod;
}
}
}
return c;
}
node cheng2(node a,node b)
{
node c;
memset(c.m,0,sizeof(c.m));
for(int i=1;i<=2;i++)
{
for(int j=1;j<=1;j++)
{
for(int k=1;k<=2;k++)
{
c.m[i][j]=(c.m[i][j]+(a.m[i][k]*b.m[k][j])%mod)%mod;
}
}
}
return c;
}
node ksm(node a,int b)
{
node ret;
memset(ret.m,0,sizeof(ret.m));
for(int i=1;i<=2;i++) ret.m[i][i]=1;
while(b)
{
if(b&1)
{
ret=cheng(ret,a);
}
a=cheng(a,a);
b>>=1;
}
return ret;
}
void re(int &x)
{
long long q; cin>>q;
x=q;
}
void write(int x)
{
if (x<0)
{
putchar('-');
x = -x;
}
if (x > 9) write(x / 10);
putchar(x % 10 ^ 48);
}
signed main()
{
int x,a,c,n,g;
re(mod); re(a); re(c); re(x); re(n); re(g);
A.n=2;
A.m[1][1]=a; A.m[1][2]=1;
A.m[2][1]=0; A.m[2][2]=1;
Q.m[1][1]=x; Q.m[2][1]=c;
if(n<=1) return write(x),0;
node ans=ksm(A,n-2);
node aans=cheng2(ans,Q);
write(aans.m[1][1]%mod%g);
return 0;
}