#include <bits/stdc++.h>
using namespace std;
vector<int> T[1000000 * 4];
int N, M;
const int maxLen = 1000100;
int lowbit(int x) { return x & (-x); }
void insert(int x, int r) {
  while (x <= maxLen) {
    T[x].push_back(r);
    x += lowbit(x);
  }
}
int query(int x, int y) {
  int ret = 0;
  while (x > 0) {
    int l = 0, r = T[x].size() - 1;
    if (T[x][l] <= y) {
      while (l < r) {
        int mid = (l + r) >> 1;
        if (T[x][mid + 1] > y) {
          r = mid;
        } else {
          l = mid + 1;
        }
      }
      ret += l + 1;
    }
    x -= lowbit(x);
  }
  return ret;
}
int main(int argc, char *argv[]) {
  scanf("%d%d", &N, &M);
  for (int i = 0; i < N; i++) {
    int l, r;
    scanf("%d%d", &l, &r);
    insert(l, r);
  }
  for (int i = 1; i <= maxLen; i++) {
    T[i].push_back(0);
  }
  for (int i = 1; i < maxLen; i++) {
    sort(T[i].begin(), T[i].end());
  }
  for (int i = 0; i < M; i++) {
    int now;
    scanf("%d", &now);
    int x = 0;
    int ans = N;
    for (int j = 0; j < now; j++) {
      int y;
      scanf("%d", &y);
      if (x + 1 <= y - 1) {
        ans -= query(y - 1, y - 1) - query(x, y - 1) - query(y - 1, x) +
               query(x, x);
      }
      x = y;
    }
    ans -= query(maxLen, maxLen) - query(x, maxLen) - query(maxLen, x) +
           query(x, x);
    printf("%d\n", ans);
  }
  return 0;
}
