#include<stdio.h>
#include<vector>
using namespace std;
long long mod = 1e9 + 7;
vector<int>edge[121212];
bool is_gone[121212];
int C[121212];
long long D[121212][4];
void dfs(int w) {
int i;
is_gone[w] = 1;
if (C[w] & 1)D[w][0] = 1;
if (C[w] & 2)D[w][1] = 1;
if (C[w] & 4)D[w][2] = 1;
for (i = 0; i < edge[w].size(); i++) {
if (is_gone[edge[w][i]])continue;
dfs(edge[w][i]);
D[w][0] *= (D[edge[w][i]][1] + D[edge[w][i]][2])%mod;
D[w][1] *= (D[edge[w][i]][2] + D[edge[w][i]][0])%mod;
D[w][2] *= (D[edge[w][i]][0] + D[edge[w][i]][1])%mod;
D[w][0] %= mod;D[w][1] %= mod;D[w][2] %= mod;
}
}
int main() {
int n, k;
int i, j;
scanf("%d%d", &n, &k);
for (i = 0; i < n - 1; i++) {
int x, y;
scanf("%d%d", &x, &y);
edge[x].push_back(y);
edge[y].push_back(x);
}
for (i = 1; i <= n; i++)C[i] = (1 << 3) - 1;
for (i = 0; i < k; i++) {
int x, y;
scanf("%d%d", &x, &y);
C[x] = (1<<(y-1));
}
dfs(1);
printf("%lld", (D[1][0] + D[1][1] + D[1][2])%mod);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbG9uZyBsb25nIG1vZCA9IDFlOSArIDc7CnZlY3RvcjxpbnQ+ZWRnZVsxMjEyMTJdOwpib29sIGlzX2dvbmVbMTIxMjEyXTsKaW50IENbMTIxMjEyXTsKbG9uZyBsb25nIERbMTIxMjEyXVs0XTsKdm9pZCBkZnMoaW50IHcpIHsKCWludCBpOwoJaXNfZ29uZVt3XSA9IDE7CglpZiAoQ1t3XSAmIDEpRFt3XVswXSA9IDE7CglpZiAoQ1t3XSAmIDIpRFt3XVsxXSA9IDE7CglpZiAoQ1t3XSAmIDQpRFt3XVsyXSA9IDE7Cglmb3IgKGkgPSAwOyBpIDwgZWRnZVt3XS5zaXplKCk7IGkrKykgewoJCWlmIChpc19nb25lW2VkZ2Vbd11baV1dKWNvbnRpbnVlOwoJCWRmcyhlZGdlW3ddW2ldKTsKCQlEW3ddWzBdICo9IChEW2VkZ2Vbd11baV1dWzFdICsgRFtlZGdlW3ddW2ldXVsyXSklbW9kOwoJCURbd11bMV0gKj0gKERbZWRnZVt3XVtpXV1bMl0gKyBEW2VkZ2Vbd11baV1dWzBdKSVtb2Q7CgkJRFt3XVsyXSAqPSAoRFtlZGdlW3ddW2ldXVswXSArIERbZWRnZVt3XVtpXV1bMV0pJW1vZDsKCQlEW3ddWzBdICU9IG1vZDtEW3ddWzFdICU9IG1vZDtEW3ddWzJdICU9IG1vZDsKCX0KfQppbnQgbWFpbigpIHsKCWludCBuLCBrOwoJaW50IGksIGo7CglzY2FuZigiJWQlZCIsICZuLCAmayk7Cglmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewoJCWludCB4LCB5OwoJCXNjYW5mKCIlZCVkIiwgJngsICZ5KTsKCQllZGdlW3hdLnB1c2hfYmFjayh5KTsKCQllZGdlW3ldLnB1c2hfYmFjayh4KTsKCX0KCWZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKUNbaV0gPSAoMSA8PCAzKSAtIDE7Cglmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7CgkJaW50IHgsIHk7CgkJc2NhbmYoIiVkJWQiLCAmeCwgJnkpOwoJCUNbeF0gPSAoMTw8KHktMSkpOwoJfQoJZGZzKDEpOwoJcHJpbnRmKCIlbGxkIiwgKERbMV1bMF0gKyBEWzFdWzFdICsgRFsxXVsyXSklbW9kKTsKCXJldHVybiAwOwp9