#include using namespace std; typedef long long ll; typedef pair P; #define REP(i,n) for(ll i=0;i vl; typedef vector > vvl; vvl mul(vvl X, vvl Y) { vvl Z(X.size(),vl(Y[0].size())); REP(i,X.size()){ REP(k,Y.size()){ REP(j,Y[0].size()){ Z[i][j]=(Z[i][j]+X[i][k]*Y[k][j])%MOD; } } } return Z; } vvl pow(vvl A,ll n){ vvl B(A.size(),vl(A[0].size())); REP(i,B.size()) B[i][i]=1; while(n>0){ if (n%2==1) B=mul(B,A); A=mul(A,A); n/=2; } return B; } ll modpow(ll x,ll n){ ll res=1; while(n!=0LL){ if(n%2!=0LL) res=(res*x)%MOD; x=(x*x)%MOD; n/=2; } return res; } int main(void){ cin.tie(nullptr); ios_base::sync_with_stdio(false); ll i,j; ll a,b,c,d,e,N; cin >> a >> b >> c >> d >> e >> N; vvl A(4,vl(4,0)); A[0][0]=c+1; A[0][1]=d-c; A[0][2]=-d; A[0][3]=e; A[1][0]=1; A[2][1]=1; A[3][3]=1; if(N==0){ cout << a << endl; return 0; } if(N==1){ cout << a+b << endl; return 0; } A=pow(A,N-2); ll k=a+b+b*c+a*d+e; ll x=(A[0][0]*k+A[0][1]*(a+b)+A[0][2]*a+A[0][3])%MOD; cout << (x+MOD)%MOD << endl; return 0; }