#include <bits/stdc++.h>
using namespace std;
const int max_N = 300000 + 10;
const int N = 1000002;
vector<int> seg[3 * N + 10];
vector<int> po[N + 10];
int p[max_N];
void build(int st = 0, int en = N, int ind = 1) {
  if (en - st == 1) {
    for (int i = 0; i < (int)po[st].size(); i++) seg[ind].push_back(po[st][i]);
    sort(seg[ind].begin(), seg[ind].end());
    return;
  }
  int mid = (st + en) / 2, a = 2 * ind, b = a + 1;
  build(st, mid, a), build(mid, en, b);
  merge(seg[a].begin(), seg[a].end(), seg[b].begin(), seg[b].end(),
        back_inserter(seg[ind]));
}
int calc(int l, int r, int st = 0, int en = N, int ind = 1) {
  if (l >= en || r <= st) return 0;
  if (l <= st && r >= en) {
    int x = lower_bound(seg[ind].begin(), seg[ind].end(), l) - seg[ind].begin();
    return (int)seg[ind].size() - x;
  }
  int mid = (st + en) / 2;
  return calc(l, r, st, mid, 2 * ind) + calc(l, r, mid, en, 2 * ind + 1);
}
int main() {
  int n, m, l, r, cnt;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &l, &r);
    po[r].push_back(l);
  }
  build();
  for (int i = 0; i < m; i++) {
    scanf("%d", &cnt);
    for (int j = 1; j <= cnt; j++) scanf("%d", &p[j]);
    int c(0);
    p[0] = 0, p[cnt + 1] = N - 1;
    for (int i = 0; i <= cnt; i++) c += calc(p[i] + 1, p[i + 1]);
    printf("%d\n", n - c);
  }
  return 0;
}
