#include <bits/stdc++.h>
using namespace std;
int test, a, p;
long long l, r;
long long modPow(long long a, long long b, long long c) {
  long long res = 1 % c;
  while (b > 0) {
    if (b & 1) res = (res * a) % c;
    a = (a * a) % c;
    b >>= 1;
  }
  return res;
}
int main() {
  scanf("%d", &test);
  while (test--) {
    scanf("%d%I64d%I64d%d", &a, &l, &r, &p);
    if (a % p == 0) {
      if (a & 1) {
        if (p == 2)
          puts("0");
        else {
          long long z = modPow(2, r - l, p);
          z = modPow(z, p - 2, p);
          printf("%I64d\n", z);
        }
      } else
        puts("1");
      continue;
    }
    long long res = modPow(2, l, p - 1);
    res = modPow(a, res, p);
    if (res == 1) {
      if (a & 1)
        printf("%d\n", 2 % p);
      else
        printf("%I64d\n", modPow(2, r - l + 1, p));
      continue;
    }
    long long c = modPow(2, r + 1, p - 1);
    c = modPow(a, c, p) - 1;
    res = modPow(res - 1, p - 2, p);
    c = (c * res) % p;
    if (a & 1) {
      long long z = modPow(2, r - l, p);
      z = modPow(z, p - 2, p);
      c = (c * z) % p;
    }
    printf("%I64d\n", c);
  }
  return 0;
}
