#include using namespace std; templateclass Matrix{private:unsigned int r,c;vector>v;public:unsigned int rows(){return r;}unsigned int columns(){return c;}unsigned int size(){return r*c;}Matrix(unsigned int rows,unsigned int columns):r(rows),c(columns){v.resize(rows);for(unsigned int i=0;i&operator[](unsigned int row){return v[row];}const Matrix&operator*=(const Matrix&m){if(c!=m.r)throw;Matrix n(r,m.c);for(unsigned int i=0;i0){if(p&1)n*=m;m*=m;p>>=1;}return n;}}; long long fib(int n){ Matrix a(2,2); a[0][0] = a[0][1] = a[1][0] = 1; a[1][1] = 0; a = a.pow(n); return a[1][0]; } int main(){ int n; cin >> n; cout << fib(n+1) << endl; return 0; }