#include <cstdio>
#include<cstdlib>
#include <cstring>
#include <climits>
#include <algorithm>
#define mod 1000000007
using namespace std;
long long int x,y;
struct Multi
{
long long int num[3][3];
} ans,rns;
Multi work(Multi A,Multi B)
{
Multi C;
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++)
C.num[i][j]=0;
for(int i=1; i<=2; i++)
for(int k=1; k<=2; k++)
if(A.num[i][k]!=0)
{
for(int j=1; j<=2; j++)
C.num[i][j]=(C.num[i][j]+(A.num[i][k]*B.num[k][j])%mod+mod)%mod;//需要将C.num[i][j]放在里面
}
return C;
}
void work1(int n)
{
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++)
if(i==j)
ans.num[i][j]=1;
else
ans.num[i][j]=0;
while(n)
{
if(n&1)
ans=work(ans,rns);
rns=work(rns,rns);
n>>=1;
}
}
int main()
{
while(~scanf("%lld%lld",&x,&y))
{
rns.num[1][1]=1;
rns.num[1][2]=-1;
rns.num[2][1]=1;
rns.num[2][2]=0;
int n;
scanf("%d",&n);
if(n==1)
printf("%lld\n",(x%mod+mod)%mod);
else if(n==2)
printf("%lld\n",(y%mod+mod)%mod);
else
{work1(n-2);
long long an=ans.num[1][1]*y%mod+ans.num[1][2]*x%mod;
an=(an%mod+mod)%mod;
printf("%lld\n",an);
}
}
return 0;
}