#include <bits/stdc++.h>
long long t, k, l, r, p;
long long mi(long long a, long long b, long long mo) {
  long long res = 1;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mo;
    a = a * a % mo;
  }
  return res;
}
long long getans() {
  r = r - l + 1;
  long long res = (k & 1) ? mi(mi(2, p - 2, p), r - 1, p) : 1;
  long long x = mi(k, mi(2, l, p - 1) + p - 1, p);
  if ((x - 1) % p == 0) return res * mi(2, r, p) % p;
  res = res * (mi(x, mi(2, r, p - 1) + p - 1, p) - 1) % p *
        mi(x - 1, p - 2, p) % p;
  return (res + p) % p;
}
int main() {
  scanf("%I64d", &t);
  for (; t; t--) {
    scanf("%I64d%I64d%I64d%I64d", &k, &l, &r, &p);
    if (p == 2)
      printf("%d\n", (k & 1) ? 0 : 1);
    else
      printf("%I64d\n", getans());
  }
}
