#include <bits/stdc++.h>
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <cstring>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <complex.h>
#include <fenv.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdint.h>
#include <tgmath.h>
#define int __int128
using namespace std;
int n;
int Mod;
int g;
struct Matrix{
int num[5][5];
void clear(){
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
num[i][j]=0;
}
}
}
};
Matrix operator*(Matrix x,Matrix y){
Matrix sum;
sum.clear();
for(int i=1;i<=2;i++){
for(int k=1;k<=2;k++){
for(int j=1;j<=2;j++){
sum.num[i][j]+=x.num[i][k]%Mod*y.num[k][j]%Mod;
sum.num[i][j]%=Mod;
}
}
}
return sum;
}
Matrix Fast_Power(Matrix A,int k){
Matrix sum;
sum.clear();
for(int i=1;i<=2;i++) sum.num[i][i]=1;
while(k){
if(k&1) sum=sum*A;
A=A*A;
k>>=1;
}
return sum;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int a,c,x0;
cin>>Mod>>a>>c>>x0>>n>>g;
Matrix A,P;
A.clear();
P.clear();
A.num[1][1]=x0;
A.num[1][2]=c;
P.num[1][1]=a;
P.num[2][1]=1;
P.num[2][2]=1;
int ans=(A*Fast_Power(P,n)).num[1][1]%g;
long long as=ans;
cout<<as;
return 0;
}