#include<bits/stdc++.h>
using namespace std;
const int sz=10,mod=1000000007;
int k;
struct mat{
long long a[sz][sz]={};
mat operator *(const mat& T) const{
mat res;
int r;
for(int i=0;i<sz;i++){
for(int k=0;k<sz;k++){
r=a[i][k];
for(int j=0;j<sz;j++){
res.a[i][j]+=T.a[k][j]*r;
res.a[i][j]%=mod;
}
}
}
return res;
}
mat operator ^(long long x) const{
mat res,bas;
for(int i=0;i<sz;i++)res.a[i][i]=1;
for(int i=0;i<sz;i++){
for(int j=0;j<sz;j++){
bas.a[i][j]=a[i][j]%mod;
}
}
while(x){
if(x&1)res=res*bas;
bas=bas*bas;
x>>=1;
}
return res;
}
};
int main(){
cin>>k;
if(k==1){
cout<<10;
return 0;
}
mat a,b;
for(int i=0;i<sz;i++){
for(int j=max(0,i-2);j<=min(sz-1,i+2);j++){
a.a[i][j]=1;
}
}
for(int i=1;i<sz;i++){
b.a[0][i]=1;
}
mat c=(b*(a^(k-1)));
long long ans=0;
for(int i=0;i<sz;i++){
ans=(ans+c.a[0][i])%mod;
}
cout<<ans;
return 0;
}