#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int base=1000000000+7;
struct Matrix{
int a[2][2]={0};
};
Matrix One(){
Matrix res;
res.a[0][0]=1;res.a[0][1]=0;
res.a[1][0]=0;res.a[1][1]=1;
return res;
}
Matrix Nhan(Matrix x, Matrix y){
Matrix res;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
res.a[i][j]=0;
for(int t=0;t<2;t++)
res.a[i][j]=(res.a[i][j]+x.a[i][t]*y.a[t][j])%base;
}
return res;
}
Matrix LuyThua(Matrix x,int n){
Matrix res=One();
while(n>0){
if (n%2==1) res=Nhan(res,x);
x=Nhan(x,x);
n=n/2;
}
return res;
}
int n;
int kq;
int32_t main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
if (n==1 || n==2){
cout<<1<<endl;
return 0;
}
Matrix tmp; // tmp=[f(2), f(1)]
tmp.a[0][0]=1;tmp.a[0][1]=1;
Matrix X;
X.a[0][0]=1;X.a[0][1]=1;
X.a[1][0]=1;X.a[1][1]=0;
// [F(n), F(n-1)] = [F(2), F(1)] * X^(n-2)
X=LuyThua(X,n-2);
tmp=Nhan(tmp,X);
kq=tmp.a[0][0];
cout<<kq<<endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwoKY29uc3QgaW50IGJhc2U9MTAwMDAwMDAwMCs3OwoKc3RydWN0IE1hdHJpeHsKICAgIGludCBhWzJdWzJdPXswfTsKfTsKCk1hdHJpeCBPbmUoKXsKICAgIE1hdHJpeCByZXM7CiAgICByZXMuYVswXVswXT0xO3Jlcy5hWzBdWzFdPTA7CiAgICByZXMuYVsxXVswXT0wO3Jlcy5hWzFdWzFdPTE7CiAgICByZXR1cm4gcmVzOwp9CgpNYXRyaXggTmhhbihNYXRyaXggeCwgTWF0cml4IHkpewogICAgTWF0cml4IHJlczsKICAgIGZvcihpbnQgaT0wO2k8MjtpKyspCiAgICAgICAgZm9yKGludCBqPTA7ajwyO2orKyl7CiAgICAgICAgICAgIHJlcy5hW2ldW2pdPTA7CiAgICAgICAgICAgIGZvcihpbnQgdD0wO3Q8Mjt0KyspCiAgICAgICAgICAgICAgICByZXMuYVtpXVtqXT0ocmVzLmFbaV1bal0reC5hW2ldW3RdKnkuYVt0XVtqXSklYmFzZTsKICAgICAgICB9CiAgICByZXR1cm4gcmVzOwp9CgpNYXRyaXggTHV5VGh1YShNYXRyaXggeCxpbnQgbil7CiAgICBNYXRyaXggcmVzPU9uZSgpOwogICAgd2hpbGUobj4wKXsKICAgICAgICBpZiAobiUyPT0xKSByZXM9TmhhbihyZXMseCk7CiAgICAgICAgeD1OaGFuKHgseCk7CiAgICAgICAgbj1uLzI7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgppbnQgbjsKaW50IGtxOwoKaW50MzJfdCBtYWluKCkKewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGNpbj4+bjsKICAgIGlmIChuPT0xIHx8IG49PTIpewogICAgICAgIGNvdXQ8PDE8PGVuZGw7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICAKICAgIE1hdHJpeCB0bXA7IC8vIHRtcD1bZigyKSwgZigxKV0KICAgIHRtcC5hWzBdWzBdPTE7dG1wLmFbMF1bMV09MTsKICAgIAogICAgTWF0cml4IFg7CiAgICBYLmFbMF1bMF09MTtYLmFbMF1bMV09MTsKICAgIFguYVsxXVswXT0xO1guYVsxXVsxXT0wOwogICAgCiAgICAvLyBbRihuKSwgRihuLTEpXSA9IFtGKDIpLCBGKDEpXSAqIFheKG4tMikKICAgIFg9THV5VGh1YShYLG4tMik7CiAgICB0bXA9Tmhhbih0bXAsWCk7CiAgICBrcT10bXAuYVswXVswXTsKICAgIAogICAgY291dDw8a3E8PGVuZGw7CiAgICByZXR1cm4gMDsKfQ==