#include using namespace std; #include using namespace atcoder; using ll=long long; using Graph=vector>; #define MAX 1000 //#define MOD 1000000007 #define MOD 998244353 //#define INF 1000000000 #define INF 1000000000000000000 ll dfs(Graph &G,int v,int p,vector &multi){ ll ret=1; for(int nv:G[v]){ if(nv==p){ continue; } multi[v]*=dfs(G,nv,v,multi)+1; multi[v]%=MOD; ret*=multi[nv]; ret%=MOD; } return ret; } int main(){ int N; cin>>N; vector p(N); Graph G(N); for(int i=1;i>p[i]; p[i]--; G[p[i]].push_back(i); } vector multi(N,1); cout<