#include <stdio.h>
typedef long long ll;
const ll MOD = 100000007;
void multiply(ll A[2][2], ll B[2][2], ll C[2][2]) {
ll T[2][2] = {0};
for (int i = 0; i < 2; i++) {
for (int k = 0; k < 2; k++) {
if (A[i][k] == 0) continue;
for (int j = 0; j < 2; j++) {
T[i][j] = (T[i][j] + A[i][k] * B[k][j]) % MOD;
}
}
}
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
C[i][j] = T[i][j];
}
void power(ll A[2][2], int n) {
ll res[2][2] = {{1, 0}, {0, 1}};
while (n > 0) {
if (n & 1) multiply(res, A, res);
multiply(A, A, A);
n >>= 1;
}
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
A[i][j] = res[i][j];
}
int main() {
ll m, f, k;
while (scanf("%lld %lld %lld", &m, &f, &k) != EOF) {
if (k == 0) {
printf("%lld\n", (m + f) % MOD);
continue;
}
ll T[2][2] = {{0, 1}, {1, 1}};
power(T, k);
// M_k = T[0][0]*m + T[0][1]*f
// F_k = T[1][0]*m + T[1][1]*f
ll final_m = (T[0][0] * m + T[0][1] * f) % MOD;
ll final_f = (T[1][0] * m + T[1][1] * f) % MOD;
printf("%lld\n", (final_m + final_f) % MOD);
}
return 0;
}