#include using namespace std; #include using mint = atcoder::modint998244353; vector &operator*=(vector &a, vector b){ int n = a.size(), m = b.size(); vector c(n + m - 1); for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ c[i + j] += a[i] * b[j]; } } a = c; return a; } int main(){ int N; cin >> N; vector pare(N); for (int i = 1; i < N; i++) cin >> pare[i], pare[i]--; vector> dp(N, {0, 1}); for (int i = N - 1; i >= 0; i--){ for (int j = (int)(dp[i].size()) - 1; j > 0; j--){ dp[i][j - 1] += dp[i][j]; } if (i) dp[pare[i]] *= dp[i]; } mint ans = 0; for (auto x : dp[0]) ans += x; cout << ans.val() << endl; }