#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<map>#include<set>#include<vector>using namespace std;typedef long long lld;#define pb push_back#define mp make_pair#define X first#define Y second#define inf 0xffffffflld mod;struct mat{lld m[2][2];mat(){}mat operator *(mat b){mat c;for(int i=0;i<2;i++)for(int j=0;j<2;j++)c.m[i][j]=0;for(int i=0;i<2;i++)for(int k=0;k<2;k++)if(m[i][k]){for(int j=0;j<2;j++)c.m[i][j]=(c.m[i][j]+(m[i][k]*b.m[k][j])%mod)%mod;}return c;}mat operator ^(lld n){mat a,c;for(int i=0;i<2;i++)for(int j=0;j<2;j++){a.m[i][j]=m[i][j];if(i == j)c.m[i][j]=1;elsec.m[i][j]=0;}for(;n;n>>=1){if(n&1)c=c*a;a=a*a;}return c;}};int main(){lld a,b,n;while(cin >> a >> b >> n){n/=2;mod=(a+b)*2;lld x=(a+b)*2;x=(x%mod+mod)%mod;lld y=-(a-b)*(a-b);y=(y%mod+mod)%mod;mat A;A.m[0][0]=x;A.m[1][0]=y;A.m[0][1]=1;A.m[1][1]=0;mat B=A^n;lld ans=B.m[0][0];ans=(ans*2)%mod;ans=(ans+mod-1)%mod;cout << ans << endl;}return 0;}


