#include <iostream>
#define boost ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
#define ll long long
const ll MOD = 1e9 + 7;
ll n;
class Matrix {
public:
ll data[2][2];
Matrix(){}
Matrix(ll a, ll b, ll c, ll d) {
data[0][0] = a;
data[0][1] = b;
data[1][0] = c;
data[1][1] = d;
}
Matrix& operator *=(Matrix &b){
Matrix c;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
c.data[i][j] = (data[i][0] * b.data[0][j] + data[i][1] * b.data[1][j]) % MOD;
return *this = c;
}
};
ll pow(Matrix a, ll n) {
Matrix t(1, 0, 0, 1);
for (; n > 0; n >>= 1, a *= a)
if (n & 1)
t *= a;
return t.data[0][0];
}
void solve() {
cin >> n;
cout << pow(Matrix(1, 1, 1, 0), n - 1) << "\n";
}
int main() {
boost
int t = 1;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIGJvb3N0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKY29uc3QgbGwgTU9EID0gMWU5ICsgNzsKCmxsIG47CgpjbGFzcyBNYXRyaXggewpwdWJsaWM6CiAgICBsbCBkYXRhWzJdWzJdOwoKICAgIE1hdHJpeCgpe30KCiAgICBNYXRyaXgobGwgYSwgbGwgYiwgbGwgYywgbGwgZCkgewogICAgICAgIGRhdGFbMF1bMF0gPSBhOwogICAgICAgIGRhdGFbMF1bMV0gPSBiOwogICAgICAgIGRhdGFbMV1bMF0gPSBjOwogICAgICAgIGRhdGFbMV1bMV0gPSBkOwogICAgfQoKCiAgICBNYXRyaXgmIG9wZXJhdG9yICo9KE1hdHJpeCAmYil7CiAgICAgICAgTWF0cml4IGM7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKQogICAgICAgICAgICAgICAgYy5kYXRhW2ldW2pdID0gKGRhdGFbaV1bMF0gKiBiLmRhdGFbMF1bal0gKyBkYXRhW2ldWzFdICogYi5kYXRhWzFdW2pdKSAlIE1PRDsKICAgICAgICByZXR1cm4gKnRoaXMgPSBjOwogICAgfQp9OwoKbGwgcG93KE1hdHJpeCBhLCBsbCBuKSB7CiAgICBNYXRyaXggdCgxLCAwLCAwLCAxKTsKICAgIGZvciAoOyBuID4gMDsgbiA+Pj0gMSwgYSAqPSBhKQogICAgICAgIGlmIChuICYgMSkKICAgICAgICAgICAgdCAqPSBhOwogICAgcmV0dXJuIHQuZGF0YVswXVswXTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuOwogICAgY291dCA8PCBwb3coTWF0cml4KDEsIDEsIDEsIDApLCBuIC0gMSkgPDwgIlxuIjsKfQoKaW50IG1haW4oKSB7CiAgICBib29zdAogICAgaW50IHQgPSAxOwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==