#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
const int p = 1e9 + 7;
const int maxn = 1e6 + 10;
int fen[maxn] = {};
void upd(int p, int val) {
  for (int i = p; i <= maxn; i += i & -i) fen[i] += val;
}
int get(int p) {
  int ans = 0;
  for (int i = p; i; i -= i & -i) ans += fen[i];
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  vector<pair<int, int>> seg(n), process;
  for (int i = 0; i <= n - 1; i++) cin >> seg[i].first >> seg[i].second;
  sort(seg.begin(), seg.end());
  vector<vector<pair<int, int>>> v(m);
  for (int i = 0; i <= m - 1; i++) {
    int t;
    cin >> t;
    int tmp[t];
    cin >> tmp[0];
    process.push_back({0, tmp[0]});
    v[i].push_back({0, tmp[0]});
    for (int j = 1; j <= t - 1; j++) {
      cin >> tmp[j];
      process.push_back({tmp[j - 1], tmp[j]});
      v[i].push_back({tmp[j - 1], tmp[j]});
    }
    process.push_back({tmp[t - 1], 1e6 + 10});
    v[i].push_back({tmp[t - 1], 1e6 + 10});
  }
  sort(process.rbegin(), process.rend());
  int pos = seg.size() - 1;
  map<pair<int, int>, int> res;
  for (auto [x, y] : process) {
    for (int i = pos; i >= 0; i--) {
      if (seg[i].first <= x) break;
      upd(seg[i].second, 1);
      pos--;
    }
    res[{x, y}] = get(y - 1);
  }
  for (int i = 0; i <= m - 1; i++) {
    int kq = n;
    for (auto [x, y] : v[i]) {
      kq = kq - res[{x, y}];
    }
    cout << kq << '\n';
  }
}
