#include <bits/stdc++.h>
using namespace std;
long long pw(long long base, long long e) {
  return e ? pw(base * base, e / 2) * (e % 2 ? base : 1) : 1;
}
const int maxn = 1e6 + 10, mod = 1e9 + 7, maxlg = 21, lim = 1e6;
const long long INF = 1e9;
long long fen[maxn];
vector<int> r[maxn];
int n;
int ans[maxn];
pair<int, int> a[maxn];
vector<pair<int, int> > query[maxn];
void update(int ind) {
  for (; ind < maxn; ind += ind & -ind) {
    fen[ind]++;
  }
}
int get(int ind) {
  long long res = 0;
  for (; ind; ind -= ind & -ind) {
    res += fen[ind];
  }
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int q, cnt, m;
  cin >> n >> q;
  for (int i = 0; i < n; i++) {
    cin >> a[i].first >> a[i].second;
    r[a[i].second].push_back(a[i].first);
  }
  for (int j = 0; j < q; j++) {
    cin >> m;
    int prev, cur;
    prev = 0;
    while (m--) {
      cin >> cur;
      if (cur - prev > 1) {
        query[cur - 1].push_back({prev + 1, j});
      }
      prev = cur;
    }
    if (lim > prev) {
      query[lim].push_back({prev + 1, j});
    }
  }
  for (int i = 1; i <= lim; i++) {
    if (r[i].size()) {
      for (auto l : r[i]) {
        update(l);
      }
    }
    if (query[i].size()) {
      int val = get(i);
      for (auto d : query[i]) {
        ans[d.second] += val - get(d.first - 1);
      }
    }
  }
  for (int i = 0; i < q; i++) {
    cout << n - ans[i] << '\n';
  }
}
