#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<deque>
#include<queue>
#include<set>
#include<vector>
using namespace std;
const char IN[] = {"rsir.in"};
const char OUT[] = {"rsir.out"};
const int INF = 1000000005;
const int MMAX = 7005;
#define II inline
#define LL long long
#define PII pair<int, int>
#define fs first
#define ss second
#define mp make_pair
#define pb push_back
#define FOR(i, a, b) for(int i = a ; i <= b ; i++)
#define IFOR(i, a, b) for(int i = a ; i >= b ; i--)
#define FORIT(it, V) for(vector<int> :: iterator it = V.begin() ; it != V.end() ; it++)
//#define all(a) a, a +
int a, b, x, y, z, t0, t1;
LL N;
int M;
int drum = -1, ciclu;
int pc1[MMAX], pc2[MMAX];
void citi()
{
scanf("%d%d%d%d%d%d%d%d%lld", &t0, &t1, &a, &b, &x, &y, &z, &M, &N);
t0 %= M;t1 %= M;
}
void precalcul()
{
FOR(i, 1, M)
{
pc1[i] = (a * ((i * i) % M) + x * i)%M;
pc2[i] = (b * ((i * i) % M) + y * i)%M;
}
}
inline int mod(LL a, int b)
{
LL x = (a - 1) % b + 1;
return (int)x;
}
inline void avansa(PII &x)
{
int aux = x.fs;
x.fs = (pc1[x.ss] + pc2[x.fs] + z)%M;
x.ss = aux;
}
void detect_ciclu()
{
int i, j;
PII a, b;
a = mp(t1, t0);
b = mp(t1, t0);
for(i = 2, j = 2 ; ; i++, j++)
{
avansa(a);
avansa(b);
j++;
avansa(b);
if(a == b) break;
}
ciclu = j - i;
b = mp(t1, t0);
if(a == b) drum = 1;
if(drum == -1)
for(drum = 2, i++; ; i++, drum++)
{
avansa(a);
avansa(b);
if(a == b) break;
}
drum--;
if(N > drum)
N = mod(N - drum,ciclu) + drum;
}
void scrie()
{
PII a = mp(t1, t0);
FOR(i, 2, N)
avansa(a);
printf("%d\n", a.fs);
}
int main()
{
freopen(IN, "r", stdin);
freopen(OUT, "w", stdout);
citi();
precalcul();
detect_ciclu();
scrie();
return 0;
}