#include<stdio.h>
const int MOD=1e9 +7 ;
struct matrix{
int x,y,**s;
void init(const int &a,const int &b){
x=a;y=b;
s=new int *[a];
for (int i=0 ;i<a;i++){
s[i]=new int [b];
}
}
};
void mat_multi(const matrix m1,const matrix m2,matrix &m3){
m3.init(m1.x,m2.y);
for (int i=0 ;i<m1.x;i++){
for (int j=0 ;j<m2.y;j++){
m3.s[i][j]=0 ;
for (int k=0 ;k<m1.y;k++){
m3.s[i][j]+=m1.s[i][k]*m2.s[k][j];
}
}
}
}
void mat_input(matrix &m){
int dx,dy;
scanf ("%d%d" ,&dx,&dy);
m.init(dx,dy);
for (int i=0 ;i<m.x;i++){
for (int j=0 ;j<m.y;j++){
scanf ("%d" ,&m.s[i][j]);
}
}
}
int mat_print(const matrix &m){
for (int i=0 ;i<m.x;i++){
for (int j=0 ;j<m.y;j++){
printf ("%d " ,m.s[i][j]);
}
putchar ('\n' );
}
}
matrix mat_pow(matrix mx,const int k){
if (k==1 )return mx;
matrix mt;
mt.init(2 ,2 );
mat_multi(mat_pow(mx,k/2 ),mat_pow(mx,k/2 ),mt);
if (k&1 ) mat_multi(mt,mx,mt);
return mt;
}
int main(){
int a,b,k;
scanf ("%d%d%d" ,&a,&b,&k);
matrix M,m0;
M.init(1 ,2 );
M.s[0 ][0 ]=a;
M.s[0 ][1 ]=b;
m0.init(2 ,2 );
m0.s[0 ][0 ]=m0.s[0 ][1 ]=m0.s[1 ][0 ]=1 ;
m0.s[1 ][1 ]=0 ;
m0=mat_pow(m0,k);
mat_multi(M,m0,M);
printf ("%d" ,M.s[0 ][1 ]);
}
#include<stdio.h>
const int MOD=1e9 +7 ;
struct matrix{
int x,y,**s;
void init(const int &a,const int &b){
x=a;y=b;
s=new int *[a];
for (int i=0 ;i<a;i++){
s[i]=new int [b];
}
}
};
void mat_multi(const matrix m1,const matrix m2,matrix &m3){
m3.init(m1.x,m2.y);
for (int i=0 ;i<m1.x;i++){
for (int j=0 ;j<m2.y;j++){
m3.s[i][j]=0 ;
for (int k=0 ;k<m1.y;k++){
m3.s[i][j]+=m1.s[i][k]*m2.s[k][j];
}
}
}
}
void mat_input(matrix &m){
int dx,dy;
scanf ("%d%d" ,&dx,&dy);
m.init(dx,dy);
for (int i=0 ;i<m.x;i++){
for (int j=0 ;j<m.y;j++){
scanf ("%d" ,&m.s[i][j]);
}
}
}
int mat_print(const matrix &m){
for (int i=0 ;i<m.x;i++){
for (int j=0 ;j<m.y;j++){
printf ("%d " ,m.s[i][j]);
}
putchar ('\n' );
}
}
matrix mat_pow(matrix mx,const int k){
if (k==1 )return mx;
matrix mt;
mt.init(2 ,2 );
mat_multi(mat_pow(mx,k/2 ),mat_pow(mx,k/2 ),mt);
if (k&1 ) mat_multi(mt,mx,mt);
return mt;
}
void std_fib(int a,int b,int k){
int u=a,v=b;
while ((k--)>0 ){
printf ("%d " ,u);u+=v;
if ((k--)>0 ){
printf ("%d " ,v);v+=u;
}
}
printf ("\n" );
}
int main(){
int a,b,k0;
scanf ("%d%d%d" ,&a,&b,&k0);
for (int k=1 ;k<=k0;k++){
matrix M,m0;
M.init(1 ,2 );
M.s[0 ][0 ]=a;
M.s[0 ][1 ]=b;
m0.init(2 ,2 );
m0.s[0 ][0 ]=m0.s[0 ][1 ]=m0.s[1 ][0 ]=1 ;
m0.s[1 ][1 ]=0 ;
m0=mat_pow(m0,k);
mat_multi(M,m0,M);
printf ("%d " ,M.s[0 ][1 ]);
}
printf ("\n" );
std_fib(a,b,k0);
}