#include<cstdio>
#include<cstring>
const int mod=10007;
struct Mat
{
int mat[3][3];
};
Mat Mult(Mat a,Mat b)
{
Mat c;
memset(c.mat,0,sizeof(c.mat));
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
for(int k=0;k<3;k++){
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
c.mat[i][j]%=mod;
}
}
}
return c;
}
Mat QMult(Mat a,int b)
{
Mat c;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
c.mat[i][j]=i==j;
while(b){
if(b&1)
c=Mult(c,a);
a=Mult(a,a);
b>>=1;
}
return c;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
Mat c;
memset(c.mat,0,sizeof(c.mat));
c.mat[0][0]=c.mat[0][1]=c.mat[0][2]=c.mat[1][0]=c.mat[2][1]=1;
if(n==1) puts("1");
else if(n==2) puts("2");
else if(n==3) puts("4");
else
{
c=QMult(c,n-3);
printf("%d\n",(c.mat[0][0]*4+c.mat[0][1]*2+c.mat[0][2])%mod);
}
}
}
07-23
07-23
07-23