#include <bits/stdc++.h>
using namespace std;
long long pow(long long a, long long b, long long p) {
  long long r = 1;
  for (; b; b >>= 1, a = a * a % p)
    if (b & 1) r = r * a % p;
  return r;
}
void extend_gcd(long long &x, long long &y, long long a, long long b) {
  if (b == 0) {
    x = 1, y = 0;
    return;
  }
  extend_gcd(x, y, b, a % b);
  x -= a / b * y;
  y ^= x, x ^= y, y ^= x;
}
int main() {
  int T;
  long long k, l, r, p, x, y, t, tt;
  cin >> T;
  while (T--) {
    cin >> k >> l >> r >> p;
    if (k % p && pow(k, pow(2, l, p - 1), p) == 1)
      t = pow(2, r - l + 1, p), tt = k % 2 ? pow(2, r - l, p) : 1;
    else {
      t = k % p ? pow(k, pow(2, r + 1, p - 1), p) + p - 1 : p - 1;
      tt = k % p ? pow(k, pow(2, l, p - 1), p) + p - 1 : p - 1;
      if (k % 2) tt = tt * pow(2, r - l, p) % p;
    }
    extend_gcd(x, y, tt, p);
    cout << (t * x % p + p) % p << endl;
  }
}
