#include <bits/stdc++.h>
using namespace std;
long long remain(int k, long long i, int p) {
  if (i == 0) return 1;
  long long ans = remain(k, i / 2, p);
  ans = ans * ans % p;
  if (i % 2) return ans * k % p;
  return ans % p;
}
long long l, r;
int k, p;
int main() {
  int T;
  cin >> T;
  while (T--) {
    scanf("%d%I64d%I64d%d", &k, &l, &r, &p);
    if (k == 1) {
      cout << 2 % p << endl;
      continue;
    }
    if (p == 2) {
      cout << ((k % 2) ^ 1) << endl;
      continue;
    }
    if (k % p == 0) {
      if (k % 2)
        cout << remain((p + 1) / 2, r - l, p) << endl;
      else
        puts("1");
      continue;
    }
    int po = remain(2, l, p - 1);
    int fir = remain(k, po, p);
    if (fir == 1) {
      if (k % 2)
        puts("2");
      else
        cout << remain(2, r - l + 1, p) << endl;
      continue;
    }
    long long ans;
    ans = remain(k, remain(2, r + 1, p - 1), p) - 1;
    ans = ans * remain(fir - 1, p - 2, p) % p;
    ans = (ans + p) % p;
    if (k % 2) ans = ans * remain((p + 1) / 2, r - l, p) % p;
    cout << ans << endl;
    continue;
  }
  return 0;
}
