#include #include using namespace std; struct mat { int d[2][2]; const mat &operator=(const mat &rhs) { memcpy(this, &rhs, sizeof(rhs)); return *this; } const mat &operator*=(const mat &rhs) { mat ret; memset(&ret, 0, sizeof(ret)); for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) for (int k = 0; k < 2; k++) ret.d[i][j] += d[i][k] * rhs.d[k][j], ret.d[i][j] %= 7; memcpy(this, &ret, sizeof(ret)); return *this; } }; template void fpow(T &ans, const T &a, int b) { for (T x = a; b; b >>= 1) { if (b & 1) ans *= x; x *= x; } } int main() { int a, b, n; while (scanf("%d%d%d", &a, &b, &n), a | b | n) if (n <= 2) puts("1"); else { mat ans, mul; ans.d[0][0] = ans.d[1][1] = 1; ans.d[0][1] = ans.d[1][0] = 0; mul.d[0][0] = a; mul.d[0][1] = b; mul.d[1][0] = 1; mul.d[1][1] = 0; fpow(ans, mul, n - 2); printf("%d\n", (ans.d[0][0] + ans.d[0][1]) % 7); } return 0; }