#include <bits/stdc++.h>
using namespace std;
const long long P = 1e9 + 7;
long long fpow(long long b, long long p) {
  p %= (P - 1);
  long long r = 1ll;
  while (p) {
    if (p & 1) r *= b, r %= P;
    b = b * b % P;
    p >>= 1;
  }
  return r;
}
int main() {
  long long a, b, x, n;
  scanf("%I64d%I64d%I64d%I64d", &a, &b, &n, &x);
  if (a == 1)
    printf("%I64d\n", (x + n % P * b % P) % P);
  else
    printf("%I64d\n",
           (fpow(a, n) * x % P +
            ((fpow(a, n) - 1) * fpow(a - 1, P - 2)) % P * b % P + P) %
               P);
  return 0;
}
