#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define mod 1000000007
#define rep(i,a,n) for(register int i=a;i<=n;++i)
#define dwn(i,n,a) for(register int i=n;i>=a;--i)
using namespace std;
ll n,p[3][3],base[3][3],init[3],tmp[3][3],ans[3];
inline ll read()
{
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
void write(ll x)
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar('0'+x%10);
}
void mul()
{
memset(tmp,0,sizeof(tmp));
rep(i,1,2)
rep(j,1,2)
rep(k,1,2)tmp[i][j]=(tmp[i][j]+p[i][k]*base[k][j])%mod;
rep(i,1,2)
rep(j,1,2)p[i][j]=tmp[i][j];
return;
}
void up()
{
memset(tmp,0,sizeof(tmp));
rep(i,1,2)
rep(j,1,2)
rep(k,1,2)tmp[i][j]=(tmp[i][j]+base[i][k]*base[k][j])%mod;
rep(i,1,2)
rep(j,1,2)base[i][j]=tmp[i][j];
return;
}
int main()
{
n=read();
if(n==1||n==2)
{
putchar('1');
return 0;
}
n-=2;
p[1][1]=p[2][2]=1;
init[1]=init[2]=1;
base[1][1]=base[1][2]=base[2][1]=1;
while(n)
{
if(n&1)mul();
n>>=1;
up();
}
rep(i,1,2)ans[1]=(ans[1]+init[i]*p[i][1])%mod;
write(ans[1]);
return 0;
}