#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
struct MM {
  long long G[(125)][(125)], S[(125)][(125)];
  void sum(int N, int M) {
    static long long H[(125)][(125)];
    for (int i(0); i < N; i++)
      for (int j(0); j < M; j++) H[i][j] = (i ? H[i - 1][j] : 0) + G[i][j];
    for (int i(0); i < N; i++)
      for (int j(0); j < M; j++) S[i][j] = H[i][j] + (j ? S[i][j - 1] : 0);
  }
  long long sq(int ax, int ay, int bx, int by) {
    long long W(S[bx][by]);
    if (ax) W -= S[ax - 1][by];
    if (ay) W -= S[bx][ay - 1];
    if (ax && ay) W += S[ax - 1][ay - 1];
    return W;
  }
} H[(12)];
int N, Q, C, x, y, X, Y, a;
int main(void) {
  scanf("%d%d%d", &N, &Q, &C);
  for (int i(0); i < N; i++) {
    scanf("%d%d%d", &x, &y, &a);
    for (int i(0); i < (12); i++) H[i].G[x][y] += a, ++a %= C + 1;
  }
  for (int i(0); i < (12); i++) H[i].sum((125) - 2, (125) - 2);
  for (int i(0); i < Q; i++)
    scanf("%d%d%d%d%d", &a, &x, &y, &X, &Y), a %= C + 1,
        printf("%lld\n", H[a].sq(x, y, X, Y));
  return 0;
}
