#include <bits/stdc++.h>
using namespace std;
int MOD;
long long powe(long long a, long long b, long long M) {
  if (a == 0) return 0;
  long long result = 1;
  while (b) {
    if (b & 1) result = (result * a) % M;
    b >>= 1;
    a = (a * a) % M;
  }
  return result;
}
long long multiply(long long k, long long l, long long r) {
  long long k2l;
  if (k == 0)
    k2l = 0;
  else
    k2l = powe(k, powe(2, l, MOD - 1), MOD);
  if (k2l == 1) {
    long long X = powe(2, r - l + 1, MOD);
    return X % MOD;
  }
  long long X = powe(2, r - l + 1, MOD - 1);
  long long licznik = (powe(k2l, X, MOD) + MOD - 1) % MOD;
  long long mianownik = k2l - 1;
  return (licznik * powe(mianownik, MOD - 2, MOD)) % MOD;
}
long long solve(long long k, long long l, long long r) {
  long long mi;
  if (k % 2 == 0) {
    mi = 1;
  } else {
    mi = powe(2, r - l, MOD);
  }
  long long li = multiply(k % MOD, l, r);
  return (li * powe(mi, MOD - 2, MOD)) % MOD;
}
int main() {
  int T;
  scanf("%d", &T);
  for (int t = 0; t < (T); ++t) {
    long long k, l, r, p;
    cin >> k >> l >> r >> p;
    if (p == 2) {
      cout << (k % 2 ? 0 : 1) << endl;
      continue;
    }
    if (k == 1) {
      cout << (2 % p) << endl;
      continue;
    }
    MOD = p;
    cout << (solve(k, l, r) + MOD) % MOD << endl;
  }
}
