import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random #sys.setrecursionlimit(10**9)rg # (itertools.prrange(n)): """ n = 5 s = set() for i in range(1<> j) & 1 == 0: a.append(j) else: b.append(j) b.reverse() a += b s.add(tuple(a)) print(len(s)) exit() """ n = int(input()) a = list(map(int,input().split())) #alist = [] #s = input() #n,m = map(int,input().split()) #for i in range(n): # alist.append(list(map(int,input().split()))) def f(r): if r <= 1: return 1 else: return pow(2,r-1,mod) x,y,z = 0,0,0 for i in a: if i < 0: x += 1 if i == 0: y += 1 if i > 0: z += 1 mod = 998244353 ans = f(x) * f(z) if x > 0 and z > 0: ans *= 2 if y == 1: ans *= (1 + min(1,x) + min(1,z)) print(ans % mod)