#include <bits/stdc++.h>
using namespace std;
long long k, l, r, p;
long long bspow(long long a, long long b, long long p) {
  long long res = 1 % p;
  a %= p;
  while (b) {
    if (b & 1) res = res * a % p;
    a = a * a % p;
    b >>= 1;
  }
  return res;
}
long long div(long long a, long long b, long long p) {
  return a * bspow(b, p - 2, p) % p;
}
long long pt(long long a, long long b, long long p) {
  if (a % p == 0) return 0;
  return bspow(a, bspow(2, b, p - 1), p);
}
long long sum(long long a, long long b, long long p) {
  if (b == 0) return 1;
  if ((a - 1) % p == 0) return bspow(2, b, p);
  return div((pt(a, b, p) + p - 1) % p, (a + p - 1) % p, p);
}
long long solve() {
  if (k == 1) return 2 % p;
  if (k % 2 == 0) return sum(pt(k, l, p), r - l + 1, p);
  if (p == 2) return 0;
  return div(sum(pt(k, l, p), r - l + 1, p), bspow(2, r - l, p), p);
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%I64d%I64d%I64d%I64d", &k, &l, &r, &p);
    printf("%I64d\n", solve());
  }
}
