func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long maxn = 1e5 + 7;   long long n, q;   long long a[maxn];   long long m;   map<long long, long long> ma;   long long Mod(long long x, long long mod) {     if (x < mod) return x;     return x % mod + mod;   }   long long fp(long long a, long long b, long long mod) {     long long tmp = 1;     while (b) {       if (b & 1) tmp = Mod(tmp * a, mod);       b >>= 1, a = Mod(a * a, mod);     }     return tmp;   }   long long phi(long long k) {     long long s = k, kk = k;     if (ma.count(k)) return ma[k];     for (long long i = 2; i * i <= k; i++) {       if (k % i == 0) s = s / i * (i - 1);       while (k % i == 0) k /= i;     }     if (k > 1) s = s / k * (k - 1);     return ma[kk] = s;   }   long long solve(long long l, long long r, long long mod) {     if (l == r || mod == 1) return Mod(a[l], mod);     return fp(a[l], solve(l + 1, r, phi(mod)), mod);   }   int main() {     cin >> n >> m;     for (long long i = 1; i <= n; i++) {       scanf( %lld , &a[i]);     }     scanf( %d , &q);     while (q--) {       long long l, r;       scanf( %lld%lld , &l, &r);       printf( %lld n , solve(l, r, m) % m);     }     return 0;   }   