rt,怀疑式子退错了
#include <bits/stdc++.h>
using namespace std;
#define int __int128
inline int read(){
int x=0;bool f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=0;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return f?x:-x;
}
inline void out(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) out(x/10);
putchar(x%10|48);
}
int n,mod,aa,c,x,g;
struct jz{
int a[2][2];
}base,xx;
inline jz mul(jz x,jz y){
jz z;
memset(z.a,0,sizeof(z.a));
for(int k=0;k<2;k++)
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
z.a[i][j]+=(x.a[i][k]*y.a[k][j]%mod),z.a[i][j]%=mod;
return z;
}
inline jz Pow(jz x,int y){
jz res=x;
for(y--;y;x=mul(x,x),y>>=1)
if(y&1)
res=mul(res,x);
return res;
}
signed main(){
mod=read(),aa=read(),c=read(),x=read(),n=read(),g=read();
base.a[0][0]=x,base.a[1][0]=c;
xx.a[0][0]=aa,xx.a[0][1]=xx.a[1][1]=1;
base=mul(base,Pow(xx,n));
out(base.a[0][0]%g),putchar(10);
return 0;
}