#include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define Mod 100000007 typedef long long ll; #define N 2//这里表示2*2的矩阵//如果是3*3的 则可以令为N 3 struct Mu{ ll a[N][N]; Mu(){ memset(a,0,sizeof(a)); } }; Mu Multiply(Mu t1,Mu t2){//求两个矩阵相乘 Mu res; for(ll i=0;i<N;i++){ for(ll j=0;j<N;j++){ for(ll k=0;k<N;k++) { res.a[i][j]=(res.a[i][j]+t1.a[i][k]*t2.a[k][j])%Mod; } } } return res; } Mu QP(Mu x,ll n)//矩阵快速幂 返回结果对象 { Mu res; res.a[0][0]=res.a[1][1]=res.a[2][2]=1;//单位矩阵 while(n){ if(n&1){ res=Multiply(res,x); } x=Multiply(x,x); n>>=1; } return res; } Mu ans; ll n,F1=1,F2=1; void init(){ //初始化矩阵 //比如斐波那契数列 ans.a[0][0]=ans.a[0][1]=ans.a[1][0]=1; } void Ans(){ ans=QP(ans,n-2);//算ans^n cout<<(ans.a[0][0]*F1+ans.a[0][1]*F2)%Mod<<endl; } int main(){ cin>>n; if(n==1) return cout<<F1<<endl,0; else if(n==2) return cout<<F2<<endl,0; init(); Ans(); return 0; }