func_code_string: #include <bits/stdc++.h>   using namespace std;   long long calc(const long long &x, const long long &pow, const long long &pp) {     long long res = 1, tmp = (x % pp);     long long cur = pow;     while (cur > 0) {       if (cur % 2 == 0) {         tmp = (tmp * tmp) % pp;         cur = cur / 2;       } else {         res = (res * tmp) % pp;         cur = cur - 1;       }     }     return res;   }   int obr() {     long long k, l, r, p;     cin >> k >> l >> r >> p;     long long ans;     if (p == 2) {       cout << (1 - (k % 2)) << endl;       return 0;     }     if (k == 1)       ans = 2 % p;     else {       long long st_l = calc(2, l, p - 1), st_r = calc(2, r + 1, p - 1);       long long rev_2 = (p + 1) / 2;       long long ch = (calc(k, st_r, p) + p - 1) % p;       long long zn = (calc(k, st_l, p) + p - 1) % p;       if (k % p == 0) zn = ch = p - 1;       if (zn == 0) {         ch = calc(2, r - l + 1, p);       } else {         zn = calc(zn, p - 2, p);         ch = (ch * zn) % p;       }       if (k % 2) {         long long to_div = calc(rev_2, r - l, p);         ch = (ch * to_div) % p;       }       ans = ch;     }     cout << ans << endl;     return 0;   }   int main() {     ios_base::sync_with_stdio(false);     int t;     cin >> t;     for (int i = 1; i <= t; ++i) obr();     return 0;   }   