#include <bits/stdc++.h>
using namespace std;
const int NMax = 300005;
int N, M;
pair<int, int> Array[NMax];
vector<int> V[NMax];
pair<pair<int, int>, int> P[1000005];
int ind, ind2;
bool Exist[1000005];
int Res[NMax];
int Aib[1000005];
int A[NMax];
void Update(int poz) {
  int i = poz;
  while (i <= 1000000) {
    Aib[i]++;
    i += i & (-i);
  }
}
int Sum(int poz) {
  int ans = 0, i = poz;
  while (i >= 1) {
    ans += Aib[i];
    i -= i & (-i);
  }
  return ans;
}
void Read() {
  scanf("%d%d", &N, &M);
  for (int i = 1; i <= N; i++) {
    scanf("%d%d", &Array[i].first, &Array[i].second);
  }
  sort(Array + 1, Array + N + 1);
  for (int i = 1; i <= M; i++) {
    int cnt;
    scanf("%d", &cnt);
    for (int j = 1; j <= cnt; j++) {
      int val;
      scanf("%d", &val);
      if (Exist[val] == 0) A[++A[0]] = val;
      Exist[val] = 1;
      V[i].push_back(val);
    }
    V[i].push_back(0);
    V[i].push_back(1000001);
    sort(V[i].begin(), V[i].end());
    for (int j = 0; j < V[i].size() - 1; j++)
      P[++ind2] = make_pair(make_pair(V[i][j], V[i][j + 1]), i);
  }
  sort(A + 1, A + A[0] + 1);
  sort(P + 1, P + ind2 + 1);
}
void Solve() {
  int poz = N;
  for (int i = ind2; i >= 1; i--) {
    while (poz >= 1 && P[i].first.first < Array[poz].first) {
      Update(Array[poz].second);
      --poz;
    }
    Res[P[i].second] += Sum(P[i].first.second - 1);
  }
  for (int i = 1; i <= M; i++) {
    printf("%d\n", N - Res[i]);
  }
}
int main() {
  Read();
  Solve();
  return 0;
}
