#include<bits/stdc++.h>
using namespace std;
inline void read(unsigned long long &n)
{
unsigned long long x=0,f=1;
char ch;
for(ch=getchar();!(ch>='0'&&ch<='9')&&ch!='-';ch=getchar());
if(ch=='-')
{
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
n=x*f;
}
const unsigned long long mod=1000000007;
unsigned long long n,m,a,c,x0,g;
struct mul
{
unsigned long long a[105][105];
mul()
{
memset(a,0,sizeof a);
}
inline void build()
{
for(int i=1;i<=n;i++) a[i][i]=1;
}
}a1,ans;
mul operator *(const mul &x,const mul &y)
{
mul z;
for(int k=1;k<=2;k++)
{
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
z.a[i][j]=(z.a[i][j]+x.a[i][k]*y.a[k][j]%m)%m;
}
}
}
return z;
}
int main()
{
read(m);read(a);read(c);read(x0);read(n);read(g);
ans.a[1][1]=x0;
ans.a[2][1]=c;
a1.a[1][1]=a;a1.a[1][2]=1;
a1.a[2][1]=0;a1.a[2][2]=1;
do
{
if(n&1) ans=a1*ans;
a1=a1*a1;
n>>=1;
}while(n);
printf("%u\n",ans.a[1][1]%g);
return 0;
}