#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3 * int(1e5) + 5;
const int MAXX = int(1e6) + 5;
vector<int> tree[4 * MAXN];
int szt;
vector<int> R[MAXN];
vector<int> L;
void build_tree() {
  szt = 1;
  while (szt < (int)L.size()) szt *= 2;
  for (int v = szt; v < szt * 2; v++) {
    for (int i = 0; i < (int)R[v - szt].size(); i++)
      tree[v].push_back(R[v - szt][i]);
  }
  for (int v = szt - 1; v >= 1; v--) {
    int i = 0;
    int j = 0;
    while (i < (int)tree[v * 2].size() || j < (int)tree[v * 2 + 1].size())
      if (i == (int)tree[v * 2].size())
        tree[v].push_back(tree[v * 2 + 1][j++]);
      else if (j == (int)tree[v * 2 + 1].size())
        tree[v].push_back(tree[v * 2][i++]);
      else if (tree[v * 2][i] < tree[v * 2 + 1][j])
        tree[v].push_back(tree[v * 2][i++]);
      else
        tree[v].push_back(tree[v * 2 + 1][j++]);
  }
}
int get(int v, int tl, int tr, int l, int r, int up) {
  l = max(l, tl);
  r = min(r, tr);
  if (l > r) return 0;
  if (l == tl && r == tr) {
    return upper_bound(tree[v].begin(), tree[v].end(), up) - tree[v].begin();
  }
  int tm = (tl + tr) / 2;
  return get(v * 2, tl, tm, l, r, up) + get(v * 2 + 1, tm + 1, tr, l, r, up);
}
int get(int l, int r, int up) {
  if (l > r) return 0;
  return get(1, 0, szt - 1, l, r, up);
}
int l[MAXN];
int r[MAXN];
int n, m;
int get_pos(int _l) { return lower_bound(L.begin(), L.end(), _l) - L.begin(); }
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &l[i], &r[i]);
    L.push_back(l[i]);
  }
  sort(L.begin(), L.end());
  L.resize(unique(L.begin(), L.end()) - L.begin());
  for (int i = 0; i < n; i++) {
    int pos = get_pos(l[i]);
    R[pos].push_back(r[i]);
  }
  for (int i = 0; i <= (int)L.size(); i++) sort(R[i].begin(), R[i].end());
  build_tree();
  while (m-- > 0) {
    int cnt;
    scanf("%d", &cnt);
    int ans = n;
    int prev = -1;
    for (int i = 0; i < cnt; i++) {
      int p;
      scanf("%d", &p);
      int pos1 = get_pos(prev + 1);
      int pos2 = get_pos(p - 1);
      ans -= get(pos1, pos2, p - 1);
      prev = p;
    }
    int pos1 = get_pos(prev + 1);
    int pos2 = (int)L.size() - 1;
    ans -= get(pos1, pos2, MAXX);
    printf("%d\n", ans);
  }
  return 0;
}
