#include <bits/stdc++.h>
using namespace std;
int ST[4000005], S[1000005], E[1000005], ans[1000005], A[1000005];
int n, m, i, j;
pair<int, int> Q[1000005];
vector<int> V[1000005];
vector<pair<int, int> > V2[1000005];
int query(int root, int bas, int son, int x, int y) {
  if (bas > y or son < x) return 0;
  if (x <= bas and son <= y) return ST[root];
  return query((root << 1), bas, (bas + son >> 1), x, y) +
         query(((root << 1) | 1), (bas + son >> 1) + 1, son, x, y);
}
int update(int root, int bas, int son, int x) {
  if (bas > x or son < x) return ST[root];
  if (bas == son) return ++ST[root];
  return ST[root] = update((root << 1), bas, (bas + son >> 1), x) +
                    update(((root << 1) | 1), (bas + son >> 1) + 1, son, x);
}
int main() {
  int q, b, x;
  cin >> n >> m;
  for (i = 1; i <= n; i++) {
    scanf("%d %d", S + i, E + i);
    V[S[i]].push_back(E[i]);
  }
  for (i = 1; i <= m; i++) {
    scanf("%d", A + i);
    q = A[i];
    b = 1;
    for (j = 1; j <= q; j++) {
      scanf("%d", &x);
      V2[b].push_back(make_pair(i, x - 1));
      b = x + 1;
    }
    V2[b].push_back(make_pair(i, 1000000));
  }
  for (i = 1000000; i >= 1; i--) {
    for (j = 0; j < V[i].size(); j++) {
      update(1, 1, 1000000, V[i][j]);
    }
    for (j = 0; j < V2[i].size(); j++) {
      ans[V2[i][j].first] += query(1, 1, 1000000, 1, V2[i][j].second);
    }
  }
  for (i = 1; i <= m; i++) cout << n - ans[i] << endl;
}
