#include using namespace std; #define modulo 998244353 #define mod(mod_x) ((((long long)mod_x+modulo))%modulo) #define Inf 1000000005 struct lca{ vector depth;//depth[i] 頂点iの深さ vector> parents;//parents[i][j] 頂点iから2^j個上の親 int max_j = 30; lca(int n,vector> &E){ depth.assign(E.size(),-1); parents.assign(E.size(),vector(max_j,-1)); stack s; s.push(n); depth[n] = 0; while(s.size()!=0){ int k = s.top(); s.pop(); for(int i=0;i=0;i--){ if(parents[u][i]!=parents[v][i]){ u = parents[u][i]; v = parents[v][i]; } } return parents[u][0]; } int get_distance(int u,int v){ return depth[u]+depth[v]-2*depth[query(u,v)]; } }; int N,K,Q; vector dis; vector calc; vector cnt; vector C; void dfs(vector> &E,int now,int p){ cnt[now] = C[now]; for(int i=0;i> &E,int now,int p){ if(p==-1){ calc[now] = 0; for(int i=0;i> &E,int now,int p){ vector t; for(int i=0;i>N>>K>>Q; C.resize(N,0); vector pos(K); for(int i=0;i> E(N); for(int i=0;i> Movement; for(int i=0;i100){ for(int j=0;j