#include #include using namespace std; using T=atcoder::modint1000000007; struct matrix{ int h,w; vector> val; matrix(int r,int c=-1):h(r),w(c){ if (w==-1) w=h; val.assign(h,vector(w,0)); } matrix operator*(matrix b){ matrix a=*this,c(h,b.w); for (int i=0;i0){ if (k%2==1) ret=ret*m; m=m*m; k/=2; } return ret; } }; int main(){ int n=4; long long a,b,c,d,e,N; cin>>a>>b>>c>>d>>e>>N; matrix ans(n,1); ans.val[0][0]=a; ans.val[1][0]=a+b; ans.val[2][0]=(a+b)+(c*b+d*a+e); ans.val[3][0]=1; matrix p(n); p.val[0][1]=1; p.val[1][2]=1; p.val[2][0]=-d;p.val[2][1]=d-c;p.val[2][2]=1+c;p.val[2][3]=e; p.val[3][3]=1; ans=p.pow(N)*ans; cout<