#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long quickpow(long long a, long long n, long long mod) {
  long long ans = 1;
  while (n) {
    if (n & 1) {
      ans = ans * a % mod;
    }
    a = a * a % mod;
    n >>= 1;
  }
  return ans;
}
int main() {
  long long a, b, n, x;
  long long ans;
  scanf("%I64d%I64d%I64d%I64d", &a, &b, &n, &x);
  if (a == 1) {
    long long xn = (n % mod) * (b % mod) % mod;
    ans = (x % mod + xn % mod) % mod;
  } else {
    long long x1 = ((quickpow(a, n, mod) % mod) * (x % mod)) % mod;
    long long a1 = ((quickpow(a, n, mod) % mod - a % mod) % mod % mod) *
                   (quickpow(a - 1, mod - 2, mod) % mod) % mod;
    long long a12 = (a1 % mod) * (b % mod) % mod;
    ans = (x1 % mod + a12 % mod + b % mod) % mod;
  }
  printf("%I64d\n", ans);
  return 0;
}
