#include using namespace std; #include using namespace atcoder; using mint = atcoder::static_modint<998244353>; // using mint = atcoder::static_modint<1000000007>; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i<(int)n; i++) using vl = vector; using vvl = vector; using vvvl = vector; using vvvvl = vector; const vector dx{1,0,-1,0},dy{0,1,0,-1}; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n;cin >> n; int pos=0,nega=0,zero=0; rep(i,0,n){ int x;cin >> x; if(x>0)pos++; else if(x<0)nega++; else zero++; } mint ans=1; if(pos>0)ans*=mint(2).pow(pos-1); if(nega>0)ans*=mint(2).pow(nega-1); int c=0; if(pos>0)c++; if(nega>0)c++; if(zero>0)c++; rep(i,1,c+1)ans*=i; cout << ans.val(); }