The Cartesian coordinate system is set in the sky. There you can see n stars, the i-th has coordinates (xi, yi), a maximum brightness c, equal for all stars, and an initial brightness si (0 ≤ si ≤ c).

Over time the stars twinkle. At moment 0 the i-th star has brightness si. Let at moment t some star has brightness x. Then at moment (t + 1) this star will have brightness x + 1, if x + 1 ≤ c, and 0, otherwise.

You want to look at the sky q times. In the i-th time you will look at the moment ti and you will see a rectangle with sides parallel to the coordinate axes, the lower left corner has coordinates (x1i, y1i) and the upper right — (x2i, y2i). For each view, you want to know the total brightness of the stars lying in the viewed rectangle.

A star lies in a rectangle if it lies on its border or lies strictly inside it.

Input

The first line contains three integers n, q, c (1 ≤ n, q ≤ 105, 1 ≤ c ≤ 10) — the number of the stars, the number of the views and the maximum brightness of the stars.

The next n lines contain the stars description. The i-th from these lines contains three integers xi, yi, si (1 ≤ xi, yi ≤ 100, 0 ≤ si ≤ c ≤ 10) — the coordinates of i-th star and its initial brightness.

The next q lines contain the views description. The i-th from these lines contains five integers ti, x1i, y1i, x2i, y2i (0 ≤ ti ≤ 109, 1 ≤ x1i < x2i ≤ 100, 1 ≤ y1i < y2i ≤ 100) — the moment of the i-th view and the coordinates of the viewed rectangle.

Output

For each view print the total brightness of the viewed stars.

Examples

Input

2 3 3
1 1 1
3 2 0
2 1 1 2 2
0 2 1 4 5
5 1 1 5 5


Output

3
0
3


Input

3 4 5
1 1 2
2 3 0
3 3 1
0 1 1 100 100
1 2 2 4 4
2 2 1 4 7
1 50 50 51 51


Output

3
3
5
0

Note

Let's consider the first example.

At the first view, you can see only the first star. At moment 2 its brightness is 3, so the answer is 3.

At the second view, you can see only the second star. At moment 0 its brightness is 0, so the answer is 0.

At the third view, you can see both stars. At moment 5 brightness of the first is 2, and brightness of the second is 1, so the answer is 3.
#include <bits/stdc++.h>
using namespace std;
__attribute__((constructor)) static void fast_cin() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
}
using ll = int64_t;
using ull = uint64_t;
template <typename T>
ostream &operator<<(ostream &fout, const vector<T> &vec) {
  for (const auto &el : vec) fout << el << ' ';
  return fout;
}
template <typename T>
istream &operator>>(istream &fin, vector<T> &vec) {
  for (size_t i = 0; i < vec.size(); i++) fin >> vec[i];
  return fin;
}
vector<string> split(const string &s, char c) {
  vector<string> v;
  ull st = 0, fn = 0, lvl = 0;
  for (; fn < s.size(); fn++) {
    if (s[fn] == c && lvl == 0) {
      v.push_back(s.substr(st, fn - st));
      st = fn + 1;
    }
    if (s[fn] == '(') {
      lvl++;
    }
    if (s[fn] == ')') {
      lvl--;
    }
  }
  v.push_back(s.substr(st, fn - st));
  return v;
}
void pr_var(vector<string>::iterator it) {
  (void)it;
  cout << endl;
}
template <typename T, typename... Args>
void pr_var(vector<string>::iterator it, T a, Args... args) {
  cout << *it << "=" << a << "  ";
  pr_var(++it, args...);
}
ll div_ceil(ll n, ll d) {
  ll res = n / d;
  if (res >= 0) res += n % d ? 1 : 0;
  return res;
}
ll gcd(ll a, ll b) {
  a = llabs(a);
  b = llabs(b);
  while (a && b) a > b ? a %= b : b %= a;
  return a + b;
}
ll lcm(ll a, ll b) {
  ll c = gcd(a, b);
  return c == 0 ? 0 : llabs(a / c * b);
}
const double PI = acos(-1.0);
constexpr double EPS = 1e-9;
constexpr double INF = 2e18;
using mp = pair<ll, ll>;
using mt = tuple<ll, ll, ll>;
constexpr ll MAX = 1e5 + 5;
ll v[12][105][105];
int main() {
  ll n, q, c;
  cin >> n >> q >> c;
  for (ll i = 0; i < n; i++) {
    ll x, y, s;
    cin >> x >> y >> s;
    for (ll j = 0; j <= 11; j++) {
      v[j][x][y] += s;
      s = (s + 1) % (c + 1);
    }
  }
  for (ll i = 0; i <= 11; i++) {
    for (ll x = 1; x <= 100; x++) {
      for (ll y = 1; y <= 100; y++) {
        v[i][x][y] =
            v[i][x][y] + v[i][x - 1][y] + v[i][x][y - 1] - v[i][x - 1][y - 1];
      }
    }
  }
  for (ll i = 0; i < q; i++) {
    ll t, x1, y1, x2, y2;
    cin >> t >> x1 >> y1 >> x2 >> y2;
    t %= (c + 1);
    ll res = v[t][x2][y2] - v[t][x2][y1 - 1] - v[t][x1 - 1][y2] +
             v[t][x1 - 1][y1 - 1];
    cout << res << "\n";
  }
  return 0;
}
