#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 50, mod = 998244353;

void work(vector<int>& a) {
    for (int i = 1; i < a.size(); i++)
    a[i] = (a[i] + a[i - 1]) % mod;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n;
	cin >> n;
	int a[n+1]{};
	for (int i = 1; i <= n; i++) {
	    cin >> a[i];
	}
	
	if (n == 2) {
	    int ans = 0;
	    if (!~a[1] && !~a[2]) ans = 200;
	    else if (!~a[1] || !~a[2]) ans = 1;
	    else ans = (a[1] == a[2]);
	    cout << ans << endl;
	    return 0;
	}
	
	vector<vector<int>> x, y;
	
	vector<int> dp1(201, 0);
	if (a[1] == -1)
	    for (int i = 1; i <= 200; i++)
	        dp1[i] = 1;
	else dp1[a[1]] = 1;
	x.push_back(dp1);
	
	work(dp1);
	
	for (int i = 2; i <= n; i++) {
	    vector<int> ndp1(201);
	    
	    if (a[i] != -1) {
	        ndp1[a[i]] = dp1[a[i]];
	    }
	    else {
	        ndp1 = dp1;
	    }
	    x.push_back(ndp1);
	    dp1 = ndp1;
	    work(dp1);
	}
	
	vector<int> dp2(201, 0);
	if (a[n] == -1)
	    for (int i = 1; i <= 200; i++)
	        dp2[i] = 1;
	else dp2[a[n]] = 1;
	y.push_back(dp2);
	work(dp2);
	
	for (int i = n - 1; i >= 1; i--) {
	    vector<int> ndp2(201);
	    
	    if (~a[i]) {
	        ndp2[a[i]] = dp2[a[i]];
	    }
	    else {
	        ndp2 = dp2;
	    }
	    y.push_back(ndp2);
	    dp2 = ndp2;
	    work(dp2);
	}
	reverse(y.begin(), y.end());
	
	int ans = 0;
	for (int i = 0; i < n; i++) {
	for (int j = 1; j <= 200; j++) {
	        int add = 1ll * x[i][j] * y[i][j] % mod;
	        ans = (ans + add) % mod;
	    }
	}
	
	cout << ans << endl;
	
	return 0;
}
