#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int INF = 1000 * 1000 * 1000 + 7;
const long long LINF = (long long)INF * INF;
const int MAX = 1 << 20;
pair<int, int> s[MAX];
vector<int> p[MAX];
int T[MAX];
int ans[MAX];
void upd(int i) {
  for (; i < MAX; i |= i + 1) T[i]++;
}
int query(int i) {
  int res = 0;
  for (; i >= 0; i = (i & (i + 1)) - 1) res += T[i];
  return res;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = (0); i < (n); ++i) cin >> s[i].second >> s[i].first;
  vector<pair<pair<int, int>, int> > q;
  for (int i = (0); i < (m); ++i) {
    int cnt;
    cin >> cnt;
    p[i].resize(cnt);
    for (int j = (0); j < (cnt); ++j) cin >> p[i][j];
    q.push_back(make_pair(make_pair(p[i][0] - 1, 0), i));
    for (int j = (0); j < (cnt - 1); ++j)
      q.push_back(make_pair(make_pair(p[i][j + 1] - 1, p[i][j] + 1), i));
    q.push_back(make_pair(make_pair(MAX - 1, p[i].back() + 1), i));
  }
  sort(s, s + n);
  sort(q.begin(), q.end());
  int ptr = 0;
  for (int i = (0); i < ((int)((q).size())); ++i) {
    while (ptr < n && s[ptr].first <= q[i].first.first) upd(s[ptr++].second);
    ans[q[i].second] +=
        max(0, query(q[i].first.first) - query(q[i].first.second - 1));
  }
  for (int i = (0); i < (m); ++i) cout << n - ans[i] << "\n";
  return 0;
}
