#include <bits/stdc++.h>
using namespace std;
int c[1000005], n, m, ans[300005];
struct node {
  int l, r, id;
} e[1000005];
int cmp(node a, node b) {
  if (a.l == b.l) {
    if (a.r == b.r) return a.id < b.id;
    return a.r < b.r;
  }
  return a.l > b.l;
}
int lowbit(int x) { return x & (-x); }
void change(int i, int x) {
  while (i <= 1000000) {
    c[i] += x;
    i += lowbit(i);
  }
}
int sum(int k) {
  int s = 0;
  while (k > 0) {
    s += c[k];
    k -= lowbit(k);
  }
  return s;
}
int main() {
  int i, j, k, x, p, t;
  while (~scanf("%d%d", &n, &m)) {
    for (i = 1; i <= n; i++) {
      scanf("%d%d", &e[i].l, &e[i].r);
      e[i].id = 0;
    }
    memset(ans, 0, sizeof(ans));
    memset(c, 0, sizeof(c));
    int tt = n;
    for (i = 1; i <= m; i++) {
      scanf("%d", &t);
      scanf("%d", &x);
      if (x > 1) {
        e[++tt].l = 1;
        e[tt].r = x - 1;
        e[tt].id = i;
      }
      p = x;
      for (j = 1; j < t; j++) {
        scanf("%d", &x);
        if (p + 1 <= x - 1) {
          e[++tt].l = p + 1;
          e[tt].r = x - 1;
          e[tt].id = i;
        }
        p = x;
      }
      e[++tt].l = p + 1;
      e[tt].r = 1000000;
      e[tt].id = i;
    }
    sort(e + 1, e + tt + 1, cmp);
    for (i = 1; i <= tt; i++) {
      if (e[i].id > 0) {
        ans[e[i].id] += sum(e[i].r);
      } else
        change(e[i].r, 1);
    }
    for (i = 1; i <= m; i++) printf("%d\n", n - ans[i]);
  }
  return 0;
}
