#include <bits/stdc++.h>
using namespace std;
int n, m, tot;
vector<int> p[100010];
long long nt[301];
int a[100010], s[100010], f[100010], ff[100010], h[100010], mp[100010],
    t[100010], w[100010], dfn[100010], sz[100010], c[301][301];
void dfs(int x) {
  sz[x] = 1;
  for (auto i : p[x])
    if (i != f[x]) {
      f[i] = x;
      h[i] = h[x] + 1;
      dfs(i);
      sz[x] += sz[i];
      if (sz[i] > sz[mp[x]]) mp[x] = i;
    }
}
void bd(int x) {
  dfn[x] = ++tot;
  if (mp[x]) {
    ff[mp[x]] = ff[x];
    bd(mp[x]);
    for (auto i : p[x])
      if (i != f[x] && i != mp[x]) {
        ff[i] = i;
        bd(i);
      }
  }
}
void cg(int x, int y) {
  for (; x <= n; x += x & (-x)) a[x] += y;
}
int q(int x) {
  int r = 0;
  for (; x; x -= x & (-x)) r += a[x];
  return r;
}
long long qk(long long x, int y) {
  long long r = 1;
  for (; y; y >>= 1) {
    if (y & 1) r = r * x % 1000000007;
    x = x * x % 1000000007;
  }
  return r;
}
int main() {
  c[0][0] = 1;
  nt[0] = 1;
  for (int i = (1); i <= (300); ++i) {
    c[i][0] = 1;
    nt[i] = nt[i - 1] * qk(i, 1000000007 - 2) % 1000000007;
    for (int j = (1); j <= (i); ++j)
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % 1000000007;
  }
  scanf("%d%d", &n, &m);
  for (int i = (1); i <= (n - 1); ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    p[x].push_back(y);
    p[y].push_back(x);
  }
  f[1] = ff[1] = 1;
  dfs(1);
  bd(1);
  for (int i = (1); i <= (m); ++i) {
    int k, r, m;
    long long ans = 0;
    scanf("%d%d%d", &k, &m, &r);
    for (int j = (1); j <= (k); ++j) {
      scanf("%d", &t[j]);
      cg(dfn[t[j]], 1);
    }
    for (int j = (1); j <= (k); ++j) {
      int x = t[j], y = r;
      w[j] = -1;
      while (ff[x] != ff[y]) {
        if (h[ff[x]] < h[ff[y]]) swap(x, y);
        w[j] += q(dfn[x]) - q(dfn[ff[x]] - 1);
        x = f[ff[x]];
      }
      if (h[x] < h[y]) swap(x, y);
      w[j] += q(dfn[x]) - q(dfn[y] - 1);
    }
    for (int j = (1); j <= (k); ++j) cg(dfn[t[j]], -1);
    for (int i0 = (0); i0 <= (m); ++i0) {
      s[i0] = 1;
      for (int j = (1); j <= (k); ++j)
        s[i0] = 1ll * s[i0] * max(i0 - w[j], 0) % 1000000007;
      for (int j = (0); j <= (i0 - 1); ++j)
        s[i0] = (s[i0] + 1000000007 - 1ll * c[i0][j] * s[j] % 1000000007) %
                1000000007;
      ans = (ans + s[i0] * nt[i0]) % 1000000007;
    }
    printf("%lld\n", ans);
  }
}
