package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
if _, err := fmt.Fscan(reader, &t); err != nil {
return
}
MOD := 998244353
for tc := 0; tc < t; tc++ {
var n int
fmt.Fscan(reader, &n)
dp1_arr := make([]int, n+3)
dp2_arr := make([]int, n+3)
dp1_arr[0] = 1
for i := 0; i < n; i++ {
var x int
fmt.Fscan(reader, &x)
dp1_x := dp1_arr[x+1]
dp1_x_minus_1 := dp1_arr[x]
dp1_x_minus_2 := 0
if x >= 1 {
dp1_x_minus_2 = dp1_arr[x-1]
}
dp2_x_minus_1 := 0
if x >= 1 {
dp2_x_minus_1 = dp2_arr[x-1]
}
dp2_x_plus_1 := dp2_arr[x+1]
new_dp1_x := ((2*dp1_x)%MOD + dp1_x_minus_1) % MOD
new_dp2_x_minus_1 := ((2*dp2_x_minus_1)%MOD + dp1_x_minus_2) % MOD
new_dp2_x_plus_1 := (2 * dp2_x_plus_1) % MOD
dp1_arr[x+1] = new_dp1_x
if x >= 1 {
dp2_arr[x-1] = new_dp2_x_minus_1
}
dp2_arr[x+1] = new_dp2_x_plus_1
}
ans := 0
for i := 1; i < n+3; i++ {
ans = (ans + dp1_arr[i]) % MOD
}
for i := 0; i < n+3; i++ {
ans = (ans + dp2_arr[i]) % MOD
}
fmt.Fprintln(writer, ans)
}
}