#include<bits/stdc++.h>
using namespace std;
string he(string s1,string s2){
	int a[2500],b[2500],c[2500]={0};
	string r;
	//逆序
	for(int i=0;i<s1.size();i++) a[i]=s1[s1.size()-1-i]-'0';
	for(int i=0;i<s2.size();i++) b[i]=s2[s2.size()-1-i]-'0';
	//算相加的长度 
	int len=max(s1.size(),s2.size());
	//相加
	for(int i=0;i<len;i++){
		c[i]=a[i]+b[i];
		if(c[i]>=10){
			c[i+1]+=c[i]/10;
			c[i]%=10;
		}
	} 
	//判断第len位是不是0
	if(c[len]!=0) len++;
	//倒序输出
	for(int i=len-1;i>=0;i--){
		r=r+(char)(c[i]+'0');
	} 
	return r;
}
string ji(string s){
	string r;
	int a[2500],c[2500]={0};
	for(int i=0;i<s.size();i++){
		a[i]=s[s.size()-1-i]-'0';
	}
	int len=s.size();
	for(int i=0;i<len;i++){
		c[i]=a[i]*2;
		if(c[i]>=10){
			c[i+1]=c[i+1]+c[i]/10;
			c[i]=c[i]%10;
		}
	}
	if(c[len]!=0) len++;
	for(int i=len-1;i>=0;i--){
		r=r+(char)(c[i]+'0');
	}
	return r;
}

int main(){
  long long n;
  string x,y,z;
  cin>>n;
  x="1";
  y="2";
  if(n==1) cout<<x;
  else if(n==2) cout<<y;
  else{
  	for(int i=3;i<=n;i++){
  		z=he(ji(y),x);
  		x=y;
  		y=z;
  	}
  	cout<<z;
  }
   


	return 0;
}



/**************************************************************
	Problem: 1369
	User: hulaoshi
	Language: C++
	Result: Wrong Answer
****************************************************************/