#include<bits/stdc++.h>
using namespace std;
long long n;
const int L=2;
const long long mod=1000000007;
struct Matrix{
long long a[L][L];
void reset(){
for(int i=0;i<L;i++){
a[i][i]=1;
}
return;
}
void clear(){
memset(a,0,sizeof(a));
return;
}
Matrix operator* (Matrix y)const{
Matrix x=*this;
Matrix c;
c.clear();
for(int i=0;i<L;i++){
for(int j=0;j<L;j++){
for(int k=0;k<L;k++){
c.a[i][j]=(c.a[i][j]+((x.a[i][k]*y.a[k][j])%mod))%mod;
}
}
}
return c;
}
};
Matrix qpow(Matrix a,long long p){
Matrix ans;
ans.reset();
while(p){
if(p%2==1) ans=ans*a;
a=a*a;
p/=2;
}
return ans;
}
int main(){
scanf("%lld",&n);
Matrix A;
A.a[0][0]=1;A.a[0][1]=1;
A.a[1][0]=1;A.a[1][1]=0;
A=qpow(A,n-2);
cout<<(A.a[0][0]+A.a[0][1])%mod;
return 0;
}