#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1000000007;
struct square
{
ll a[2][2];
inline void scan(ll i,ll j,ll k,ll l)
{
a[0][0]=i,a[0][1]=j;
a[1][0]=k,a[1][1]=l;
}
inline void operator = (square b)
{
a[0][0]=b.a[0][0],a[0][1]=b.a[0][1];
a[1][0]=b.a[1][0],a[1][1]=b.a[1][1];
}
inline square operator * (square b)
{
square c;
c.a[0][0]=(a[0][0]*b.a[0][0]%mod+a[0][1]*b.a[1][0]%mod)%mod;
c.a[0][1]=(a[0][0]*b.a[0][1]%mod+a[0][1]*b.a[1][1]%mod)%mod;
c.a[1][0]=(a[1][0]*b.a[0][0]%mod+a[1][1]*b.a[1][0]%mod)%mod;
c.a[1][1]=(a[1][0]*b.a[0][1]%mod+a[1][1]*b.a[1][1]%mod)%mod;
return c;
}
inline void print()
{
cout<<a[0][0]<<" "<<a[0][1]<<endl;
cout<<a[1][0]<<" "<<a[1][1]<<endl;
}
};
square ans,b,f;
int main()
{
ll n;
cin>>n;
n-=2;
f.scan(1,2,0,0);
b.scan(0,1,1,1);
ans.scan(1,0,0,1);
while(n)
{
if(n&1) ans=ans*b;
n>>=1;
b=b*b;
}
f=f*ans;
cout<<f.a[0][1];
}