//// 9 %
#include <cstdio>
#include <iostream>

using namespace std;

const long long mod = 1e9 + 7;
long long a, b, c, d, n;

struct Mat {
  long long a[4][4];
  Mat() {
    for(int i = 0; i < 4; i++)
      for(int j = 0; j < 4; j++) a[i][j] = 0LL;
  }
  void I() {
    a[0][0] = a[1][1] = a[2][2] = a[3][3] = 1LL;
  }
};

Mat operator*(const Mat& a, const Mat& b) {
  Mat ret;
  for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 4; j++) {
      for(int k = 0; k < 4; k++) {
        ret.a[i][j] += (a.a[i][k] * b.a[k][j]) % mod;
        ret.a[i][j] %= mod;
      }
    }
  }
  return ret;
}

Mat quick_pow(Mat a, long long b) {
  Mat ret;
  ret.I();
  while(b > 0) {
    if (b&1) ret = ret * a;
    a = a * a;
    b >>= 1;
  }
  return ret;
}

int main() {
  Mat M;
  M.a[0][3] = 1;
  M.a[1][0] = 1; M.a[1][3] = 1;
  M.a[2][1] = 1; M.a[2][3] = 0;
  M.a[3][2] = 1; M.a[3][3] = 1;

  cin >> a >> b >> c >> d >> n;
  a %= mod; b %= mod; c %= mod; d %= mod;

  long long ans = -1;
  if(n == 1) {
    ans = a;
  }
  else if(n == 2) {
    ans = b;
  }
  else if(n == 3) {
    ans = c;
  }
  else if(n == 4) {
    ans = d;
  }
  else {
    Mat x;
    x = quick_pow(M, n-4);
    ans = 0LL;
    ans += (a * x.a[0][3]) % mod; ans %= mod;
    ans += (b * x.a[1][3]) % mod; ans %= mod;
    ans += (c * x.a[2][3]) % mod; ans %= mod;
    ans += (d * x.a[3][3]) % mod; ans %= mod;
  }
  cout << ans % mod << endl;
}