#include <bits/stdc++.h>
using namespace std;
long long int n, m, mod, u, v;
long long int find(long long int a, long long int b, long long int x) {
  long long int t = (x + b) / a;
  if (t % 2 == 0)
    return (t / 2 % mod * ((t + 1) % mod) % mod * (a % mod) % mod -
            t % mod * (b % mod) % mod + mod) %
           mod;
  else
    return ((t + 1) / 2 % mod * (t % mod) % mod * (a % mod) % mod -
            t % mod * (b % mod) % mod + mod) %
           mod;
}
long long int query(long long int bas, long long int son, long long int x,
                    long long int y, long long int a, long long int b) {
  if (son < x or y < bas) return 0;
  if (x <= bas and son <= y)
    return (find(a, b, v) - find(a, b, u - 1) + mod) % mod;
  long long int orta = (bas + son) / 2;
  return (query(bas, orta, x, y, a * 2, a + b) +
          query(orta + 1, son, x, y, a * 2, b)) %
         mod;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m >> mod;
  long long int l, r;
  while (m--) {
    cin >> l >> r >> u >> v;
    if (u > n) {
      cout << 0 << endl;
      continue;
    }
    v = min(v, n);
    cout << query(1, n, l, r, 1, 0) << endl;
  }
}
