def greedy(A): while len(A)>1: B=[] for i in range(len(A)-1): B.append(A[i]^A[i+1]) A=B return A[0] def nCr_mod2(n,r): return 1 if n|r==n else 0 #================================================== N=int(input()) B=list(map(int,input().split())) F=[nCr_mod2(N-1,r) for r in range(N)] Mod=998244353 DP=[1,0] for i,b in enumerate(B): E=DP.copy() if b==-1: if F[i]==0: DP[0]=2*DP[0]%Mod DP[1]=2*DP[1]%Mod else: DP[0]=DP[1]=(DP[0]+DP[1])%Mod elif b==1 and F[i]==1: DP=E[::-1] print(DP[1])