#include <iostream>
#include <vector>
using namespace std;

const long long MOD = 998244353;

long long climb_dp(int n) {
    if (n == 0) return 0; // 处理特殊情况
    
    vector<long long> dp(n + 1); // 爬i层台阶有dp[i]种方式
    dp[1] = 1;
    if(n>=2) dp[2]=2;

    for (int i = 3; i <= n; i++) {
        dp[i] = (dp[i-1] + dp[i-2]) % MOD;//每次都要取模!否则溢出。模运算具有分配律
    }

    return dp[n] % MOD;
}

int main() {
    int n;
    cin >> n;
    cout << climb_dp(n) << endl;
    return 0;
}

坑到我了,题解以后再写吧