#include <bits/stdc++.h>
using namespace std;
long long k;
long long l, r;
int p;
long long pow(long long a, long long b, long long m) {
  if (b == 0) return 1 % m;
  if (b == 1) return a % m;
  long long s = pow(a, b / 2, m);
  s = (s * s) % m;
  if (b % 2) s = (s * a) % m;
  return s;
}
long long rev(long long a, long long b) { return pow(a, b - 2, b); }
int solve() {
  if (p == 2) {
    if (k % 2 == 0)
      return 1;
    else
      return 0;
  }
  long long x = pow(k, pow(2, l, p - 1), p);
  long long a;
  if (x % p != 1) {
    a = ((pow(x, pow(2, r - l + 1, p - 1), p) + p - 1) * rev(x + p - 1, p)) % p;
  } else {
    a = pow(2, r - l + 1, p);
  }
  if (k % p == 0) a = 1;
  if (k % 2 == 1 && r > l) {
    a = (a * rev(pow(2, r - l, p), p)) % p;
  }
  return a;
}
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    scanf("%I64d%I64d%I64d%d", &k, &l, &r, &p);
    printf("%d\n", solve());
  }
  return 0;
}
