#include <bits/stdc++.h>
using namespace std;
inline long long quick_pow(long long a, long long n, long long MOD) {
  long long res = 1;
  a = (a % MOD + MOD) % MOD;
  while (n) {
    if (n & 1) res = res * a % MOD;
    a = a * a % MOD;
    n >>= 1;
  }
  return res;
}
inline long long rev(long long a, long long p) {
  return quick_pow(a, p - 2, p);
}
inline long long calc(long long k, long long n, long long p) {
  if (!(k % p)) return 0;
  return quick_pow(k, quick_pow(2, n, p - 1), p);
}
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int k, p;
    long long l, r;
    scanf("%d%lld%lld%d", &k, &l, &r, &p);
    if (p == 2) {
      printf("%d\n", k & 1 ^ 1);
      continue;
    }
    long long res = 1;
    if (calc(k, l, p) == 1)
      res = quick_pow(2, r - l + 1, p);
    else
      res = (calc(k, r + 1, p) - 1) * rev(calc(k, l, p) - 1, p) % p;
    if (k & 1) res = res * rev(quick_pow(2, r - l, p), p) % p;
    printf("%lld\n", (res + p) % p);
  }
  return 0;
}
