#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T pow2(T a) {
  return a * a;
}
template <class T>
inline bool mineq(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
const int maxn = (int)5000;
;
const int maxt = 21000;
const int maxh = 5000;
struct node {
  int c, h, t;
  bool operator<(const node& a) const { return t < a.t; }
} num[maxn];
int n, p, q;
int dpr[maxn][maxn], dpl[maxn][maxn];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> p;
  for (int i = 0; i < n; i++) cin >> num[i].c >> num[i].h >> num[i].t;
  sort(num, num + n);
  int l = 0, r;
  while (l < n) {
    r = l;
    while (r < n && num[r].t / p == num[l].t / p) r++;
    for (int i = 0; i < maxn; i++) dpr[l][i] = (i >= num[l].c ? num[l].h : 0);
    for (int i = l + 1; i < r; i++)
      for (int j = 0; j < maxn; j++) {
        if (j - num[i].c < 0) {
          dpr[i][j] = dpr[i - 1][j];
          continue;
        }
        dpr[i][j] = max(dpr[i - 1][j], dpr[i - 1][j - num[i].c] + num[i].h);
      }
    for (int i = 0; i < maxn; i++)
      dpl[r - 1][i] = (i >= num[r - 1].c ? num[r - 1].h : 0);
    for (int i = r - 2; i >= l; i--)
      for (int j = 0; j < maxn; j++) {
        if (j - num[i].c < 0) {
          dpl[i][j] = dpl[i + 1][j];
          continue;
        }
        dpl[i][j] = max(dpl[i + 1][j], dpl[i + 1][j - num[i].c] + num[i].h);
      }
    l = r;
  }
  cin >> q;
  for (int i = 0; i < q; i++) {
    int l, r, h;
    bool fl = false, fr = false;
    cin >> r >> h;
    l = r - p + 1;
    if (l < 0) fl = true;
    if (r > num[n - 1].t) fr = true;
    r = upper_bound(num, num + n, (node){0, 0, r}) - num;
    l = lower_bound(num, num + n, (node){0, 0, l}) - num;
    if (l == r)
      cout << 0 << endl;
    else if (l + 1 == r)
      cout << (h >= num[l].c ? num[l].h : 0) << endl;
    else if (num[l].t / p == num[r - 1].t / p)
      cout << (fl ? dpr[r - 1][h] : dpl[l][h]) << endl;
    else {
      int ans = 0;
      for (int i = 0; i < h + 1; i++) {
        ans = max(ans, dpl[l][i] + dpr[r - 1][h - i]);
      }
      cout << ans << endl;
    }
  }
}
