/* 一般碰到这样题基本上就是找规律了 可以开个10000个数组打个表看下规律 此题规律就是每6个循环:前面3个和后面3个正好是相反数 另外此题要注意当n正好是6的倍数要特判下还有一定先取模再想减不然会爆掉 */ #include<iostream> #include<cstdio> #include<queue> #include<cmath> #include<algorithm> #include<cstring> #include<string> const int Max=10000; long long f[Max]; long long x[Max]; using namespace std; /*void init(long long x,long long y) { long long i; f[1]=x; f[2]=y; for(i=2;i<Max;i++) { f[i+1]=(f[i]-f[i-1])%1000000007; } for(i=1;i<=1000;i++) { if(i%20==0) cout<<endl; cout<<f[i]<<" "; } cout<<endl; }*/ int main() { long long x,y; long long i,j,n; //while(1) //{ cin>>x>>y; //init(x,y); f[1]=x%1000000007; f[2]=y%1000000007; f[3]=(f[2]-f[1])%1000000007; //cout<<f[3]<<endl; f[4]=-f[1]; f[5]=-f[2]; f[6]=-f[3]; cin>>n; n%=6; if(n==0) { //cout<<f[6]<<"asd"<<endl; if(f[6]<0) cout<<(f[6]+1000000007)<<endl; else cout<<f[6]<<endl; } else { if(f[n]<0) cout<<(f[n]+1000000007)<<endl; else cout<<f[n]<<endl; } //} return 0; }