#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
int n, tt;
vector<vector<int> > cps;
vector<vector<int> > f;
vector<pair<int, int> > p;
inline void uniquevec(vector<int> &v) {
  v.push_back(-1);
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
}
inline void preadd(int x, int y) {
  int i = lower_bound(cps[0].begin(), cps[0].end(), x) - cps[0].begin();
  for (; i < cps.size(); i += i & -i) cps[i].push_back(y);
}
inline void add(int x, int y) {
  int i = lower_bound(cps[0].begin(), cps[0].end(), x) - cps[0].begin();
  for (; i < cps[0].size(); i += i & -i) {
    int j = lower_bound(cps[i].begin(), cps[i].end(), y) - cps[i].begin();
    for (; j < cps[i].size(); j += j & -j) f[i][j]++;
  }
}
inline int sum(int x, int y) {
  int ret = 0;
  int i = upper_bound(cps[0].begin(), cps[0].end(), x) - 1 - cps[0].begin();
  for (; i > 0; i -= i & -i) {
    int j = upper_bound(cps[i].begin(), cps[i].end(), y) - 1 - cps[i].begin();
    for (; j > 0; j -= j & -j) ret += f[i][j];
  }
  return ret;
}
int main() {
  cps.resize(1);
  scanf("%d %d", &n, &tt);
  while (n--) {
    int x, y;
    scanf("%d %d", &x, &y);
    p.push_back(pair<int, int>(x, y));
    cps[0].push_back(x);
  }
  uniquevec(cps[0]);
  cps.resize(cps[0].size());
  f.resize(cps[0].size());
  for (int i = 0; i < p.size(); i++) preadd(p[i].first, p[i].second);
  for (int i = 1; i < cps.size(); i++) {
    uniquevec(cps[i]);
    f[i].resize(cps[i].size());
  }
  for (int i = 0; i < p.size(); i++) add(p[i].first, p[i].second);
  while (tt--) {
    int k, bef = 0, ans = 0;
    scanf("%d", &k);
    while (k--) {
      int x;
      scanf("%d", &x);
      ans += sum(x, N) - sum(x, x - 1) - sum(bef, N) + sum(bef, x - 1);
      bef = x;
    }
    printf("%d\n", ans);
  }
}
