#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair <LL, LL> pr;
LL n;
map <LL, LL> m;
map <LL, LL> :: iterator it;
long long mod = 1000000007;
long long fib(long long n)
{
long long res,res1,res2;
long long ret;
if(n < 3)
{
return 1;
}
it = m.find(n);
if(it == m.end())
{
if(n % 2)
{
res = (n - 1) / 2;
ret = (fib(res + 1) * fib(res + 1)) + (fib(res) * fib(res)) % mod;
}
else
{
res = n / 2;
ret = (fib(res-1) * 2 + fib(res)) * fib(res) % mod;
}
m.insert(pr(n, ret));
return ret;
}
else
{
return it -> second;
}
}
int main()
{
long long n;
cin >> n;
long long ans = fib(n);
cout << ans << endl;
return 0;
}