第2和第10个点挂了 https://www.luogu.com.cn/record/121231102
cpp
#include <bits/stdc++.h>
#define rint register ll
using namespace std;
typedef long long ll;
ll n;
const ll mod=1e9+7;
struct matrix{
ll a[3][3];
}base={{{0},{0,0,1},{0,1,1}}},init={{{0},{0,1,1}}};
matrix operator *(matrix a,matrix b){
matrix c={{{0},{0},{0}}};
for(rint i=1;i<=2;i++){
for(rint j=1;j<=2;j++){
for(rint k=1;k<=2;k++){
c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mod;
}
}
}
return c;
}
inline matrix quick_pow(matrix a,ll b){
matrix ans=a;
b--;
while(b){
if(b&1) ans=ans*a;
a=a*a;
b>>=1;
}
return ans;
}
int main(){
scanf("%d",&n);
if(n==1||n==2){
putchar('1');
return 0;
}
cout<<(init*quick_pow(base,n-1)).a[1][1]%mod;
return 0;
}