1 #include <cstdio> 2 struct Matrix{int a[5][5];}; 3 const int N=2,MOD=1e4; 4 Matrix A,B,O,I; 5 Matrix Mul(Matrix A,Matrix B){ 6 Matrix C=O; 7 for(int i=1;i<=N;i++) 8 for(int j=1;j<=N;j++) 9 for(int k=1;k<=N;k++) 10 C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j])%MOD; 11 return C; 12 } 13 Matrix Pow(Matrix A,int n){ 14 Matrix B=I; 15 for(;n;n>>=1,A=Mul(A,A))if(n&1)B=Mul(B,A); 16 return B; 17 } 18 int main(){ 19 for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)O.a[i][j]=0,I.a[i][j]=(i==j); 20 A.a[1][1]=0,A.a[1][2]=1; 21 A.a[2][1]=1,A.a[2][2]=1; 22 int n; 23 while(scanf("%d",&n)){ 24 if(n==-1)break; 25 B=Pow(A,n+1),printf("%d ",B.a[1][1]); 26 } 27 return 0; 28 }