import sys
MOD = 998244353

def main():
    input = sys.stdin.read().split()
    N = int(input[0])
    a = list(map(int, input[1:N+1]))
    
    max_n = 2 * 10**5 + 10
    pow2 = [1] * (max_n + 1)
    for i in range(1, max_n + 1):
        pow2[i] = (pow2[i-1] * 2) % MOD
    inv2 = pow(2, MOD-2, MOD)
    inv_pow2 = [1] * (max_n + 1)
    inv_pow2[1] = inv2
    for i in range(2, max_n + 1):
        inv_pow2[i] = (inv_pow2[i-1] * inv2) % MOD
    
    runs = []
    current_run = []
    start = 0
    for i in range(N):
        if a[i] != 0:
            if not current_run:
                start = i
            current_run.append(a[i])
        else:
            if current_run:
                runs.append( (start, i-1, current_run) )
                current_run = []
    if current_run:
        runs.append( (start, N-1, current_run) )
    
    total = 0
    for (l, r, elements) in runs:
        m = len(elements)
        pos_list = []
        for idx in range(m):
            if abs(elements[idx]) == 2:
                pos_list.append(idx + 1)
        if not pos_list:
            continue
        
        prefix_parity = [0] * (m + 1)
        cnt = 0
        for i in range(m):
            if elements[i] < 0:
                cnt += 1
            prefix_parity[i+1] = cnt % 2
        
        sum0 = [0] * (m + 1)
        sum1 = [0] * (m + 1)
        run_start = l + 1
        for s in range(1, m + 1):
            if run_start >= 2:
                val = pow2[s-1]
            else:
                if s == 1:
                    val = 2 % MOD
                else:
                    val = pow2[s-1] % MOD
            parity = prefix_parity[s-1]
            sum0[s] = sum0[s-1]
            sum1[s] = sum1[s-1]
            if parity == 0:
                sum0[s] = (sum0[s] + val) % MOD
            else:
                sum1[s] = (sum1[s] + val) % MOD
        
        t = len(pos_list)
        for i in range(t):
            pos = pos_list[i]
            prev_pos = pos_list[i-1] if i > 0 else None
            next_pos = pos_list[i+1] if i < t -1 else None
            
            L = 1
            if prev_pos is not None:
                L = prev_pos + 1
            R = m
            if next_pos is not None:
                R = next_pos - 1
            
            for e in range(pos, R + 1):
                parity_e = prefix_parity[e]
                desired_parity = 1 - parity_e
                a_s = L
                b_s = pos
                sum_val = 0
                if a_s > b_s:
                    continue
                if desired_parity == 0:
                    sum_val = (sum0[b_s] - sum0[a_s - 1]) % MOD
                else:
                    sum_val = (sum1[b_s] - sum1[a_s - 1]) % MOD
                
                if sum_val < 0:
                    sum_val += MOD
                
                if r < N - 1:
                    pow_term = e + 1
                else:
                    if e < m:
                        pow_term = e + 1
                    else:
                        pow_term = e
                
                inv = inv_pow2[pow_term]
                contribution = (sum_val * inv) % MOD
                total = (total + contribution) % MOD
    print(total % MOD)

if __name__ == '__main__':
    main()