#include <bits/stdc++.h>
using namespace std;
vector<int> intervals[1000100];
vector<pair<int, int> > irv[1000100];
vector<int> points[1000100];
int bit[1000100];
int ans[1000100];
int MAX_N = 1000010;
void update(int x, int val) {
  while (x <= MAX_N) {
    bit[x] += val;
    x += (x & -x);
  }
}
int read(int x) {
  int ret = 0;
  while (x > 0) {
    ret += bit[x];
    x -= (x & -x);
  }
  return ret;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    int l, r;
    scanf("%d%d", &l, &r);
    intervals[r].push_back(l);
  }
  for (int i = 0; i < m; i++) {
    int siz;
    scanf("%d", &siz);
    points[i].push_back(0);
    for (int j = 0; j < siz; j++) {
      int tmp;
      scanf("%d", &tmp);
      points[i].push_back(tmp);
    }
    points[i].push_back(1000010);
    for (int j = 0; j < points[i].size() - 1; j++) {
      int l = points[i][j] + 1;
      int r = points[i][j + 1] - 1;
      irv[r].push_back(make_pair(l, i));
    }
  }
  for (int i = 0; i <= 1000009; i++) {
    for (int j = 0; j < intervals[i].size(); j++) update(intervals[i][j], +1);
    for (int j = 0; j < irv[i].size(); j++) {
      ans[irv[i][j].second] += (read(i) - read(irv[i][j].first - 1));
    }
  }
  for (int i = 0; i < m; i++) printf("%d\n", n - ans[i]);
  return 0;
}
