#include "september.h"
#include <bits/stdc++.h>
#define int long long
#define emb emplace_back
#define pii pair <int, int>
#define tiii tuple <int, int, int>
#define tdii tuple <double, int, int>
#define all(a) a.begin(), a.end()
using namespace std;
const int N = 1e5 + 5;
const double inf = 1e18;
int n, m;
vector <int> adj[N];
int32_t solve(int32_t Nn, int32_t M, std::vector<int32_t> F, std::vector<std::vector<int32_t>> S) {
n = Nn;
m = M;
for (int i = 0; i < n; i++) adj[i].clear();
for (int i = 1; i < n; i++) {
adj[i].emb(F[i]);
adj[F[i]].emb(i);
}
vector <int> pre[n];
for (int u = 0; u < n; u++) {
for (auto v : adj[u]) {
if (v == F[u]) continue;
pre[u].emb(v);
}
}
set <int> cur;
vector <bool> visited(n);
int ans = 0;
for (auto u : S[0]) {
for (auto v : pre[u]) if (!visited[v]) cur.emplace(v);
visited[u] = 1;
if (cur.find(u) != cur.end()) cur.erase(u);
if (cur.empty()) ans++;
}
return ans;
}