/*题目比较难懂就是一道找规律的题
找规律
a[3]=3;
a[4]=4;
a[i]=a[i-1]+a[i-2]
要用高精度
上代码
#include<iostream>
#include<cstdio>
#include<cstring>
#define base 10000
using namespace std;
/*
对于3:4
对于4:7
对于5:11
对于6:18
对于7:29
a[i]=a[i-1]+a[i-2];
*/
struct bign
{
int len,c[10000],sign;
bign()
{
memset(c,0,sizeof(c));
len=1;
sign=0;
}
void zero()
{
while(len>1&&c[len]==0)len--;
}
void writein(char *s)
{
int l=strlen(s),k=1;
for(int i=l-1;i>=0;i--)
{
c[len]+=(s[i]-'0')*k;
k*=10;
if(k==base)
{
k=1;
len++;
}
}
zero();
}
bign operator = (int b)
{
char s[10000];
sprintf(s,"%d",b);
writein(s);
return *this;
}
void print()
{
if(sign)printf("-");
printf("%d",c[len]);
for(int i=len-1;i>=1;i--)
printf("%04d",c[i]);
printf("\n");
}
//重载+
bign operator + (const bign &b)const
{
bign x;
x.len=max(len,b.len)+1;
for(int i=1;i<=x.len;i++)
{
x.c[i]+=c[i]+b.c[i];
x.c[i+1]+=x.c[i]/base;
x.c[i]%=base;
}
x.zero();
return x;
}
bign operator + (const int &b)const
{
bign x;
x=b;
return *this + x;
}
};
int n;
int main()
{
//freopen("C - Edge Caseout.txt","w",stdout);
bool flag;
while(scanf("%d",&n)==1)
{
flag=false;
bign a,b;
a=4;b=7;
if(n==3)
{
a.print();
continue;
}
if(n==4)
{
b.print();
continue;
}
for(int i=1;i<=10000;i++)
{
a=a+b;
if(n==(2*i+3))
{
a.print();
flag=true;
break;
}
b=a+b;
if(n==(2*i+4))
{
b.print();
flag=true;
break;
}
}
if(flag==true)continue;
}
return 0;
}