#include <bits/stdc++.h>
using namespace std;
long long int MOD;
long long int Suma(long long int n) {
  long long int a, b;
  long long int ret;
  a = n;
  b = (n + 1);
  if (a & 1)
    b /= 2;
  else
    a /= 2;
  a %= MOD;
  b %= MOD;
  ret = (a * b) % MOD;
  return ret;
}
long long int f(long long int salto, long long int primero,
                long long int inicio, long long int fin, long long int l,
                long long int r, long long int u, long long int v) {
  if (inicio >= l && fin <= r) {
    long long int elems = (fin - inicio) + 1;
    long long int A = salto;
    long long int b = primero - A;
    long long int izq = (u - b) / A;
    if (izq * A < (u - b)) izq++;
    long long int der = (v - b) / A;
    if (izq > elems || izq > der) return 0;
    der = min(der, elems);
    long long int s = (MOD + Suma(der) - Suma(izq - 1)) % MOD;
    s = (s * (A % MOD)) % MOD;
    int fact = 1;
    if (b < 0) fact = -1, b *= -1;
    long long int q = (((der - izq + 1) % MOD) * (b % MOD)) % MOD;
    if (fact == -1) q = MOD - q;
    return (s + q) % MOD;
  } else if (r < inicio || fin < l) {
    return 0;
  }
  long long int mitad = (inicio + fin) / 2;
  long long int izq = f(salto * 2LL, primero, inicio, mitad, l, r, u, v);
  long long int der =
      f(salto * 2LL, primero + salto, mitad + 1, fin, l, r, u, v);
  return (izq + der) % MOD;
}
int main() {
  long long int N;
  int M;
  long long int l, r, u, v;
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> M >> MOD;
  for (int i = 0; i < M; i++) {
    cin >> l >> r >> u >> v;
    cout << f(1, 1, 1, N, l, r, u, v) << '\n';
  }
  return 0;
}
