#include <bits/stdc++.h>
using namespace std;
long long N, mod, mod2;
long long l, r, u, v;
long long ans = 0;
long long M;
void calc(long long N, long long nl, long long nr, long long l, long long r,
          long long u, long long v, long long s, long long t) {
  if (v < s) return;
  if (u > s + (N - 1) * t) return;
  if (l > r) return;
  if (l <= nl && r >= nr) {
    if (u < s) u = s;
    long long s1 = s + t * ((u + t - 1 - s) / t);
    long long t1 = s + t * ((v - s) / t);
    if (t1 > s + t * (N - 1)) t1 = s + t * (N - 1);
    ans = (ans + ((s1 + t1) % mod2) * (((t1 - s1) / t + 1) % mod2)) % mod2;
    return;
  }
  long long nm = (nl + nr) / 2;
  calc((N + 1) / 2, nl, nm, l, min(nm, r), u, v, s, t * 2);
  calc((N) / 2, nm + 1, nr, max(nm + 1, l), r, u, v, s + t, t * 2);
}
int main() {
  scanf("%I64d %I64d %I64d", &N, &M, &mod);
  mod2 = mod * 2;
  while (M--) {
    scanf("%I64d%I64d%I64d%I64d", &l, &r, &u, &v);
    ans = 0;
    calc(N, 1, N, l, r, u, v, 1, 1);
    printf("%I64d\n", ans / 2);
  }
  return 0;
}
