#include <bits/stdc++.h>
using namespace std;
#pragma GCC diagnostic ignored "-Wmissing-declarations"
inline int safe_mul(const int x, const int y)
    __attribute__((warn_unused_result));
int const maxn = 300005;
vector<int> tree[maxn * 4];
int sz;
void build(const vector<pair<int, int>>& a) {
  sz = 1;
  while (sz < a.size()) sz <<= 1;
  for (int i = 0; i < a.size(); ++i) tree[i + sz] = {a[i].second};
  for (int i = sz - 1; i > 0; --i)
    merge(begin(tree[2 * i]), end(tree[2 * i]), begin(tree[2 * i + 1]),
          end(tree[2 * i + 1]), back_inserter(tree[i]));
}
int get(int l, int r, int x) {
  int res = 0;
  for (l += sz, r += sz; l <= r; l >>= 1, r >>= 1) {
    if (l & 1) {
      res += tree[l].end() - lower_bound(begin(tree[l]), end(tree[l]), x);
      ++l;
    }
    if (~r & 1) {
      res += tree[r].end() - lower_bound(begin(tree[r]), end(tree[r]), x);
      --r;
    }
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(false);
  int n, m;
  cin >> n >> m;
  vector<pair<int, int>> pt(n);
  for (auto& pa : pt) cin >> pa.first >> pa.second;
  sort(begin(pt), end(pt));
  build(pt);
  vector<int> res(m);
  for (int i = 0; i < m; ++i) {
    int cnt;
    cin >> cnt;
    vector<int> fa(cnt);
    for (int& x : fa) cin >> x;
    int& ans = res[i];
    int it = 0;
    for (int i = 0; i < cnt; ++i) {
      int nit =
          lower_bound(pt.begin() + it, pt.end(), make_pair(fa[i] + 1, 0)) -
          begin(pt);
      ans += get(it, nit - 1, fa[i]);
      it = nit;
    }
  }
  for (const int x : res) cout << x << '\n';
}
