#include using namespace std; using ll = long long; template using vec = vector; template using vvec = vector>; int main(){ cin.tie(0); ios::sync_with_stdio(false); int N,M; cin >> N >> M; vec A(M); set s; for(int i=0;i> A[i]; A[i]--; s.insert(A[i]); } vvec g(N); for(int i=0;i> a >> b; a--; b--; g[a].push_back(b); g[b].push_back(a); } vec dp(N); { auto dfs = [&](auto&& self,int cur,int par)->void{ bool exist = false; for(auto& to:g[cur]) if(to!=par){ self(self,to,cur); exist |= !dp[to]; } dp[cur] = exist; }; dfs(dfs,0,-1); } vec dp2(N); vvec child[2]; for(int i=0;i<2;i++) child[i] = vvec(N); { auto dfs = [&](auto&& self,int cur,int par,int parg)->void{ int n = g[cur].size(); vec L(n+1,0),R(n+1,0); for(int i=0;i=0;i--){ int to = g[cur][i]; R[i] = R[i+1] || !(to!=par? dp[to]:parg); } dp2[cur] = L[n]; for(int i=0;i