package main
import (
"io"
"os"
"strconv"
)
const MOD int64 = 998244353
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
n := nextInt()
var single [2]int64
var dp [2][2]int64
var ans int64
for i := 0; i < n; i++ {
r := nextInt() & 1
oldSingle := single
oldDp := dp
for p := 0; p < 2; p++ {
for q := 0; q < 2; q++ {
if ((p + q + r) & 1) == 0 {
v := oldDp[p][q]
ans += v
if ans >= MOD {
ans -= MOD
}
dp[q][r] += v
if dp[q][r] >= MOD {
dp[q][r] -= MOD
}
}
}
}
for p := 0; p < 2; p++ {
dp[p][r] += oldSingle[p]
if dp[p][r] >= MOD {
dp[p][r] -= MOD
}
}
single[r]++
if single[r] >= MOD {
single[r] -= MOD
}
}
os.Stdout.WriteString(strconv.FormatInt(ans%MOD, 10))
}