#include <bits/stdc++.h>
using namespace std;
long long himod(long long A, long long n, long long P) {
  if (n == 0) return 1 % P;
  if (n == 1) return A % P;
  A %= P;
  long long ret = himod(A * A % P, n / 2, P);
  if (n % 2) ret = ret * A % P;
  return ret;
}
long long hihimod(long long A, long long n, long long P) {
  if (n == 0) return A % P;
  return himod(A, himod(2, n, P - 1), P);
}
long long hisum(long long G, long long z, long long n, long long P) {
  if (n == 0) return 0;
  if (n == 1) return 1 % P;
  G %= P;
  long long ret = hisum(G * G % P, z, n / 2, P);
  ret = ret * (1 + G) % P;
  if (n % 2) {
    ret = (ret * G % P + 1) % P;
  }
  return ret;
}
long long k, l, r, p;
long long inv(long long x, long long y, long long P, long long Q, long long R,
              long long S) {
  if (y == 0) return (P % p + p) % p;
  return inv(y, x % y, R, S, P - R * (x / y), Q - S * (x / y));
}
void solve() {
  scanf("%I64d%I64d%I64d%I64d", &k, &l, &r, &p);
  if (k == 1) {
    printf("%I64d\n", 2 % p);
    return;
  }
  if (k % p == 0) {
    long long ans = 1;
    if (k % 2 == 1) ans = ans * inv(himod(2, r - l, p), p, 1, 0, 0, 1);
    printf("%I64d\n", ans);
    return;
  }
  if (k % 2 == 1 && p == 2) {
    printf("0\n");
    return;
  }
  long long g = hihimod(k, l, p);
  long long rem = himod(2, r - l + 1, p - 1) % (p - 1);
  rem = (rem + (p - 1)) % (p - 1);
  long long S = himod(g, rem, p);
  long long SRIGHT = (himod(2, r - l + 1, p) - rem) % p;
  long long D = hisum(g, 0, p - 1, p);
  D = D * SRIGHT % p;
  S = -(S * D % p);
  S = (S + hisum(g, 0, rem, p)) % p;
  if (k % 2 == 1) {
    S = S % p * inv(himod(2, r - l, p), p, 1, 0, 0, 1) % p;
  }
  if (r - l <= 100) {
    long long ans = 1;
    for (int i = l; i <= r; i++) {
      ans = ans * (hihimod(k, i, p) + 1) % p;
    }
    if (k % 2 == 1) {
      ans = ans * inv(himod(2, r - l, p), p, 1, 0, 0, 1);
    }
    printf("%I64d\n", (ans % p + p) % p);
  } else
    printf("%I64d\n", (S % p + p) % p);
}
int main(void) {
  int T;
  scanf("%d", &T);
  while (T--) solve();
  return 0;
}
