#include #include using namespace std; using i32 = int; using u32 = unsigned int; using i64 = long long; using u64 = unsigned long long; #define FAST_IO \ ios::sync_with_stdio(false); \ cin.tie(0); const i64 INF = 1001001001001001001; using Modint = atcoder::static_modint<998244353>; int main() { FAST_IO int N; cin >> N; vector c(N); for (auto& x : c) cin >> x; if (c[0] < 0 && c[N-1] > 0) { int neg = 0; int pos = 0; int zero = 0; for (int i = 0; i < N; i ++) { if (c[i] < 0) { neg ++; } else if (c[i] > 0) { pos ++; } else { zero ++; } } Modint ans = 2; ans *= Modint(2).pow(neg - 1); ans *= Modint(2).pow(pos - 1); if (zero > 0) { ans *= 3; } cout << ans.val() << endl; } else if (N >= 2) { Modint ans = 0; int zero = 0; int other = 0; for (int i = 0; i < N; i ++) { if (c[i] == 0) { zero ++; } else { other ++; } } ans = Modint(2).pow(other - 1); if (zero > 0) { ans *= 2; } cout << ans.val() << endl; } else { cout << 1 << endl; } }