1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 struct node
5 {
6 ll g[3][3];
7 }a,a1,b,c,res,res1;
8 void danwei(node &x)
9 {
10 for(int i =1;i<=2;i++)
11 for(int j=1;j<=2;j++)
12 if(i==j) x.g[i][j]=1;
13 else x.g[i][j]=0;
14 }
15 void chengfa(node &a,node &b,node &c)
16 {
17 int i,j,k;
18 memset(c.g,0,sizeof(c.g));
19 for(i=1;i<=2;i++)
20 for(j=1;j<=2;j++)
21 for(k=1;k<=2;k++)
22 c.g[i][j]=c.g[i][j]+a.g[i][k]*b.g[k][j];
23 }
24 void mi(node &x,int k)
25 {
26 danwei(res);
27 while(k!=0)
28 {
29 if(k%2==1)
30 {
31 chengfa(res,a,res1);
32 res=res1;
33 }
34 chengfa(a,a,a1);
35 a=a1;
36 k/=2;
37 }
38
39 }
40 int main()
41 {
42 int n;
43 cin>>n;
44 if(n==1)
45 {
46 cout<<1;
47 return 0;
48 }
49 memset(a.g,0,sizeof(a.g));
50 memset(b.g,0,sizeof(b.g));
51 a.g[1][1]=a.g[1][2]=a.g[2][1]=b.g[1][1]=1;
52 mi(a,n-1);
53 chengfa(res1,b,c);
54 cout<<c.g[1][1];
55 }