#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1234;
const int mod = 1e9 + 7;
int n, m, k, T[N * 4], ans[N], a[N], last;
vector<int> st[N];
vector<pair<int, int> > q[N];
void upd(int pos, int v = 1, int tl = 1, int tr = 1e6) {
  if (tl == tr) {
    T[v]++;
    return;
  }
  int tm = (tl + tr) / 2;
  if (pos <= tm)
    upd(pos, v * 2, tl, tm);
  else
    upd(pos, v * 2 + 1, tm + 1, tr);
  T[v] = T[v * 2] + T[v * 2 + 1];
}
int get(int l, int r, int v = 1, int tl = 1, int tr = 1e6) {
  if (tl > r || tr < l) return 0;
  if (l <= tl && tr <= r) return T[v];
  int tm = (tl + tr) / 2;
  return get(l, r, v * 2, tl, tm) + get(l, r, v * 2 + 1, tm + 1, tr);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> m;
  for (int i = 1, l, r; i <= n; i++) {
    cin >> l >> r;
    st[l].push_back(r);
  }
  for (int i = 1; i <= m; i++) {
    last = 1e6;
    cin >> k;
    for (int j = 1; j <= k; j++) cin >> a[j];
    for (int j = k; j; j--) {
      q[a[j]].push_back(make_pair(last, i));
      last = a[j] - 1;
    }
  }
  for (int i = 1; i <= 1e6; i++) {
    for (auto j : st[i]) upd(j);
    for (auto j : q[i]) ans[j.second] += get(i, j.first);
  }
  for (int i = 1; i <= m; i++) cout << ans[i] << endl;
  return 0;
}
