#include <bits/stdc++.h>
using namespace std;
const long long MOD_P = 998244353;
const long long MOD_PHI = 998244352; // p - 1
using Matrix = array<array<long long, 2>, 2>;
Matrix mat_mul(const Matrix& a, const Matrix& b, long long m) {
Matrix c = {{{0, 0}, {0, 0}}};
for (int i = 0; i < 2; i++)
for (int k = 0; k < 2; k++)
if (a[i][k])
for (int j = 0; j < 2; j++)
c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % m;
return c;
}
Matrix mat_pow(Matrix mat, long long exp, long long m) {
Matrix result = {{{1, 0}, {0, 1}}}; // identity
while (exp > 0) {
if (exp & 1) result = mat_mul(result, mat, m);
mat = mat_mul(mat, mat, m);
exp >>= 1;
}
return result;
}
// Fibonacci(n) mod m using matrix exponentiation
// Fib(0)=0, Fib(1)=1, Fib(2)=1, ...
long long fib_mod(long long n, long long m) {
if (m == 1) return 0;
if (n == 0) return 0;
Matrix base = {{{1, 1}, {1, 0}}};
return mat_pow(base, n, m)[0][1];
}
long long pow_mod(long long base, long long exp, long long m) {
long long result = 1;
base %= m;
while (exp > 0) {
if (exp & 1) result = result * base % m;
base = base * base % m;
exp >>= 1;
}
return result;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long n;
cin >> n;
// F(n) = 2^Fib(n)
// By Fermat's little theorem: 2^x mod p = 2^(x mod (p-1)) mod p
long long fib_n = fib_mod(n, MOD_PHI);
cout << pow_mod(2, fib_n, MOD_P) << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY29uc3QgbG9uZyBsb25nIE1PRF9QICAgPSA5OTgyNDQzNTM7CmNvbnN0IGxvbmcgbG9uZyBNT0RfUEhJID0gOTk4MjQ0MzUyOyAvLyBwIC0gMQogCnVzaW5nIE1hdHJpeCA9IGFycmF5PGFycmF5PGxvbmcgbG9uZywgMj4sIDI+OwogCk1hdHJpeCBtYXRfbXVsKGNvbnN0IE1hdHJpeCYgYSwgY29uc3QgTWF0cml4JiBiLCBsb25nIGxvbmcgbSkgewogICAgTWF0cml4IGMgPSB7e3swLCAwfSwgezAsIDB9fX07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDI7IGsrKykKICAgICAgICAgICAgaWYgKGFbaV1ba10pCiAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykKICAgICAgICAgICAgICAgICAgICBjW2ldW2pdID0gKGNbaV1bal0gKyBhW2ldW2tdICogYltrXVtqXSkgJSBtOwogICAgcmV0dXJuIGM7Cn0KIApNYXRyaXggbWF0X3BvdyhNYXRyaXggbWF0LCBsb25nIGxvbmcgZXhwLCBsb25nIGxvbmcgbSkgewogICAgTWF0cml4IHJlc3VsdCA9IHt7ezEsIDB9LCB7MCwgMX19fTsgLy8gaWRlbnRpdHkKICAgIHdoaWxlIChleHAgPiAwKSB7CiAgICAgICAgaWYgKGV4cCAmIDEpIHJlc3VsdCA9IG1hdF9tdWwocmVzdWx0LCBtYXQsIG0pOwogICAgICAgIG1hdCA9IG1hdF9tdWwobWF0LCBtYXQsIG0pOwogICAgICAgIGV4cCA+Pj0gMTsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KIAovLyBGaWJvbmFjY2kobikgbW9kIG0gdXNpbmcgbWF0cml4IGV4cG9uZW50aWF0aW9uCi8vIEZpYigwKT0wLCBGaWIoMSk9MSwgRmliKDIpPTEsIC4uLgpsb25nIGxvbmcgZmliX21vZChsb25nIGxvbmcgbiwgbG9uZyBsb25nIG0pIHsKICAgIGlmIChtID09IDEpIHJldHVybiAwOwogICAgaWYgKG4gPT0gMCkgcmV0dXJuIDA7CiAgICBNYXRyaXggYmFzZSA9IHt7ezEsIDF9LCB7MSwgMH19fTsKICAgIHJldHVybiBtYXRfcG93KGJhc2UsIG4sIG0pWzBdWzFdOwp9CiAKbG9uZyBsb25nIHBvd19tb2QobG9uZyBsb25nIGJhc2UsIGxvbmcgbG9uZyBleHAsIGxvbmcgbG9uZyBtKSB7CiAgICBsb25nIGxvbmcgcmVzdWx0ID0gMTsKICAgIGJhc2UgJT0gbTsKICAgIHdoaWxlIChleHAgPiAwKSB7CiAgICAgICAgaWYgKGV4cCAmIDEpIHJlc3VsdCA9IHJlc3VsdCAqIGJhc2UgJSBtOwogICAgICAgIGJhc2UgPSBiYXNlICogYmFzZSAlIG07CiAgICAgICAgZXhwID4+PSAxOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQogCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKIAogICAgbG9uZyBsb25nIG47CiAgICBjaW4gPj4gbjsKIAogICAgLy8gRihuKSA9IDJeRmliKG4pCiAgICAvLyBCeSBGZXJtYXQncyBsaXR0bGUgdGhlb3JlbTogMl54IG1vZCBwID0gMl4oeCBtb2QgKHAtMSkpIG1vZCBwCiAgICBsb25nIGxvbmcgZmliX24gPSBmaWJfbW9kKG4sIE1PRF9QSEkpOwogICAgY291dCA8PCBwb3dfbW9kKDIsIGZpYl9uLCBNT0RfUCkgPDwgIlxuIjsKfQ==