#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(I,A,B) for(int I = (A); I < (B); ++I) typedef long long ll; typedef vector vec; typedef vector mat; // 無理やり行列累乗を使って mat mul(mat &a, mat &b) { mat ret(a.size(), vec(b[0].size())); FOR(i,0,a.size()) { FOR(j,0,b[0].size()) { FOR(k,0,b.size()) { ret[i][j] ^= a[i][k] * b[k][j]; } } } return ret; } mat fastpow(mat &a, ll n) { mat ret(a.size(), vec(a.size())); FOR(i,0,a.size()) FOR(j,0,a.size()) ret[i][i] = 1; while(n) { if(n & 1) ret = mul(ret, a); a = mul(a, a); n >>= 1; } return ret; } int main() { ll f1,f2,N; cin>>f1>>f2>>N; if(N==0) { cout << f1 << endl; return 0; } mat m(2, vec(2)); m[0][0] = 1;m[0][1] = 1; m[1][0] = 1;m[1][1] = 0; N--; mat mm = fastpow(m, N); mat f(2,vec(1)); f[0][0] = f2;f[1][0] = f1; mat ans = mul(mm, f); cout << ans[0][0] << endl; return 0; }