#include <bits/stdc++.h>
int t, k, p, a;
long long L, R;
long long pow(long long x, long long y, int p) {
  long long res = 1;
  x = (x + p) % p;
  for (; y; y >>= 1) {
    if (y & 1) res = res * x % p;
    x = x * x % p;
  }
  return res;
}
int main() {
  scanf("%d", &t);
  while (t--)
    scanf("%d%I64d%I64d%d", &k, &L, &R, &p),
        printf(
            "%I64d\n",
            p < 3
                ? k & 1 ? 0 : 1
                : (((k % p ? pow(k, pow(2, L, p - 1), p) : 0LL) - 1
                        ? ((k % p ? pow(k, pow(2, R + 1, p - 1), p) : 0LL) -
                           1) *
                              pow((k % p ? pow(k, pow(2, L, p - 1), p) : 0LL) -
                                      1,
                                  p - 2, p) %
                              p
                        : pow(2, R - L + 1, p)) *
                       (k & 1 ? pow(pow(2, R - L, p), p - 2, p) : 1) % p +
                   p) %
                      p);
  return 0;
}
