func_code_string: #include <bits/stdc++.h>   #pragma comment(linker,  /STACK:10000000000 )   using namespace std;   const int MOD = 1000000007;   const int INF = 1000000007LL;   const long long INF2 = 1000000007LL * 1000000007LL;   const long double EPS = 1e-9;   const int SIZE = 100100;   mt19937 rng(time(0));   uniform_int_distribution<int> uid(-1000000000, 1000000000);   int n;   int a[SIZE];   int d[210][SIZE][2];   const long long md = 998244353;   const int val = 200;   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cin >> n;     if (n == 1) {       cout << 0;       return 0;     }     for (int i = 1; i <= n; ++i) cin >> a[i];     for (int lst = 1; lst <= val; ++lst) {       if (a[n] == -1) {         d[lst][n][0] = lst;         d[lst][n][1] = 1;       } else {         d[lst][n][0] = (a[n] <= lst);         d[lst][n][1] = (a[n] == lst);       }     }     for (int i = n - 1; i >= 1; --i) {       if (a[i] != -1) {         for (int lst = 1; lst <= val; ++lst) {           d[lst][i][0] = d[a[i]][i + 1][lst < a[i]];         }         for (int lst = 1; lst <= a[i]; ++lst) {           d[lst][i][1] = d[a[i]][i + 1][lst < a[i]];         }         continue;       }       long long pref = 0, suff = 0;       for (int b = 1; b <= val; ++b) {         suff += d[b][i + 1][1];         suff %= md;       }       for (int lst = 1; lst <= val; ++lst) {         pref += d[lst][i + 1][0];         pref %= md;         suff += md - d[lst][i + 1][1];         suff %= md;         d[lst][i][0] = (pref + suff) % md;       }       suff = 0;       for (int lst = val; lst >= 1; --lst) {         d[lst][i][1] = (suff + d[lst][i + 1][0]) % md;         suff += d[lst][i + 1][1];         suff %= md;       }     }     cout << d[1][1][0];     return 0;   }   