← Home
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
	}

	for i := 0; i < t; i++ {
		var n int
		fmt.Fscan(reader, &n)

		p := make([]int, n+1)
		depth := make([]int, n+1)
		head := make([]int, n)
		next := make([]int, n+1)

		depth[1] = 0

		for j := 2; j <= n; j++ {
			fmt.Fscan(reader, &p[j])
			d := depth[p[j]] + 1
			depth[j] = d
			next[j] = head[d]
			head[d] = j
		}

		dp := make([]int, n+1)
		S := make([]int, n)

		dp[1] = 1
		S[0] = 1
		totalAns := 1

		for d := 1; d < n; d++ {
			u := head[d]
			if u == 0 {
				break
			}
			for u != 0 {
				if d == 1 {
					dp[u] = S[0]
				} else {
					dp[u] = S[d-1] - dp[p[u]]
					if dp[u] < 0 {
						dp[u] += 998244353
					}
				}
				S[d] += dp[u]
				if S[d] >= 998244353 {
					S[d] -= 998244353
				}
				u = next[u]
			}
			totalAns += S[d]
			if totalAns >= 998244353 {
				totalAns -= 998244353
			}
		}

		fmt.Fprintln(writer, totalAns)
	}
}