#2 WA,#10 TLE 求助!!;
#include<iostream>
#include<cstring>
using namespace std;
const int m=1000000007;
struct asd{
long long u[4][4];
}e,f;
long long n;
asd che(asd a,asd b,int n){
asd ans;
memset(ans.u,0,sizeof(ans.u));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
ans.u[i][j]=((ans.u[i][j]%m)+((a.u[i][k]%m)*(b.u[k][j]%m)))%m;
}
}
}
return ans;
}
asd mi(asd a,int n){
asd ans=e;
while(n){
if(n&1)
ans=che(ans,a,2);
a=che(a,a,2);
n>>=1;
}
return ans;
}
int main(){
cin>>n;
e.u[1][1]=e.u[2][2]=1;e.u[1][2]=e.u[2][1]=0;
f.u[1][1]=0;f.u[1][2]=f.u[2][1]=f.u[2][2]=1;
asd ans=mi(f,n-1);
cout<<ans.u[2][2]%m;
return 0;
}