#include #define rep(i,n) for(int i = 0; i < (n); i++) using namespace std; using ll = long long; using ld = long double; int main(){ cin.tie(0); ios::sync_with_stdio(0); int N; cin >> N; vector> G(N); rep(i,N-1) { int p; cin >> p; p--; G[p].push_back(i + 1); } vector depth(N, 0); function dfs = [&](int v) -> void { for(int to : G[v]) { depth[to] = depth[v] + 1; dfs(to); } }; dfs(0); ll ans = 1; rep(i,N) if(i) ans = (ans * depth[i]) % 998244353; cout << ans << endl; }