#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int MOD=1e9+7;
int M,A,C,X,N,G;
struct Matrix
{
LL v[105][105];
int n,m;
void Set()
{
n=m=2;
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++) v[i][j]=0;
}
return;
}
};
Matrix Mul(Matrix a,Matrix b,int mod)
{
Matrix res;
res.Set();
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
for(int k=1;k<=2;k++)
{
res.v[i][j]=(res.v[i][j]+(__int128)a.v[i][k]*b.v[k][j]%mod)%mod;
}
}
}
}
Matrix a,b;
Matrix QPow(Matrix base,LL po,int mod)
{
Matrix res;
res.Set();
res.v[1][1]=res.v[2][2]=1;
while(po)
{
if(po&1) res=Mul(res,base,mod);
base=Mul(base,base,mod);
po>>=1;
}
return res;
}
int main()
{
scanf("%lld %lld %lld %lld %lld %lld",&M,&A,&C,&X,&N,&G);
a.Set(),b.Set();
a.v[1][1]=X,a.v[2][1]=C;
b.v[1][1]=A,b.v[1][2]=1,b.v[2][1]=0,b.v[2][2]=1;
Matrix res=QPow(b,N,M);
res=Mul(res,a,M);
printf("%lld\n",res.v[1][1]%G);
return 0;
}