#include <bits/stdc++.h>
using namespace std;
int n;
long long int k, l, r, p;
long long int ans;
long long int pow(long long int base, long long int exp, long long int mod) {
  long long int ret = 1;
  while (exp) {
    if (exp % 2 == 1) ret = ret * base % mod;
    base = base * base % mod;
    exp >>= 1;
  }
  return ret % mod;
}
long long int extgcd(long long int a, long long int b, long long int &x,
                     long long int &y) {
  long long int d = a;
  if (b == 0) {
    x = 1;
    y = 0;
  } else {
    d = extgcd(b, a % b, y, x);
    y -= x * (a / b);
  }
  return d;
}
long long int invmod(long long int x, long long int m) {
  long long int s, t;
  assert(extgcd(x, m, s, t) == 1);
  return (s % m + m) % m;
}
long long int product(long long int n) {
  return (pow(k, pow(2, n, p - 1), p) + p - 1) % p;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%lld%lld%lld%lld", &k, &l, &r, &p);
    if (p == 2) {
      if (k % 2 == 1)
        puts("0");
      else
        puts("1");
    } else if (k == 1) {
      printf("%lld\n", 2 % p);
    } else if (k % p == 0) {
      ans = 1;
      if (k % 2 == 1) {
        ans = ans * invmod(pow(2, r - l, p), p) % p;
      }
      printf("%lld\n", ans);
    } else if ((pow(k, pow(2, l, p - 1), p) + p - 1) % p == 0) {
      ans = pow(2, r - l + 1, p);
      if (k % 2 == 1) {
        ans = ans * invmod(pow(2, r - l, p), p) % p;
      }
      printf("%lld\n", ans);
    } else {
      ans = product(r + 1) * invmod(product(l), p) % p;
      if (k % 2 == 1) {
        ans = ans * invmod(pow(2, r - l, p), p) % p;
      }
      printf("%lld\n", ans);
    }
  }
}
