#include <bits/stdc++.h>
using namespace std;
int c[1000007], n, m, ans[300005], maxi;
struct node {
  int l, r, ind;
} a[1000007];
int lowbit(int x) { return x & -x; }
void modify(int x) {
  while (x <= maxi) {
    c[x]++;
    x += lowbit(x);
  }
}
int getsum(int x) {
  int ans = 0;
  while (x > 0) {
    ans += c[x];
    x -= lowbit(x);
  }
  return ans;
}
int cmp(node ka, node kb) {
  if (ka.l == kb.l) {
    if (ka.r == kb.r) return ka.ind < kb.ind;
    return ka.r < kb.r;
  }
  return ka.l > kb.l;
}
int main() {
  int i, j, k, x, pre, cnt;
  maxi = 1000007 - 5;
  while (scanf("%d%d", &n, &m) != EOF) {
    for (i = 1; i <= n; i++) scanf("%d%d", &a[i].l, &a[i].r), a[i].ind = 0;
    memset(ans, 0, sizeof(ans));
    memset(c, 0, sizeof(c));
    int tot = n;
    for (i = 1; i <= m; i++) {
      scanf("%d", &cnt);
      scanf("%d", &pre);
      if (x > 1) a[++tot].l = 1, a[tot].r = pre - 1, a[tot].ind = i;
      for (j = 1; j < cnt; j++) {
        scanf("%d", &x);
        if (x - 1 >= pre + 1)
          a[++tot].l = pre + 1, a[tot].r = x - 1, a[tot].ind = i;
        pre = x;
      }
      a[++tot].l = pre + 1, a[tot].r = maxi, a[tot].ind = i;
    }
    sort(a + 1, a + tot + 1, cmp);
    for (i = 1; i <= tot; i++)
      if (a[i].ind > 0)
        ans[a[i].ind] += getsum(a[i].r);
      else
        modify(a[i].r);
    for (i = 1; i <= m; i++) printf("%d\n", n - ans[i]);
  }
}
