#include<bits/stdc++.h>
using namespace std;
vector<int>adj[200005];
int ar[200005];
int cnt[200005];
int ans[505][200005];
int tot;
int X=500;
void dfs(int u,int t){
ans[t][ar[u]]+=tot;
if(ar[u]==t)tot++;
for(auto x:adj[u])dfs(x,t);
if(ar[u]==t)tot--;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,r,q;cin>>n>>r>>q;
for(int i=1;i<=n;i++){
if(i==1)cin>>ar[i];
else{
int x;cin>>x;
adj[x].push_back(i);
cin>>ar[i];
cnt[ar[i]]++;
}
}
for(int i=1;i<=r;i++){
dfs(1,i);
}
for(int i=0;i<q;i++){
int r1,r2;cin>>r1>>r2;
cout<<ans[r1][r2]<<endl;
}
}