func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, q;   long long m, w[100000];   vector<long long> phiChain;   long long modPow(long long a, long long p, long long mod) {     return (p ? modPow((a * a) % mod, p / 2, mod) * ((p & 1) ? a : 1) : 1) % mod;   }   long long phi(long long x) {     long long temp = x;     for (int i = 2; i * i <= temp; i++) {       if (temp % i == 0) x = x / i * (i - 1);       while (temp % i == 0) temp /= i;     }     if (temp > 1) x = x / temp * (temp - 1);     return x;   }   long long getRemaining(int l, int r) {     if (w[l] == 1) return 1;     if (w[l] >= 50) return 50;     if (r == l + 1) return w[l];     int z = 1, c = 0;     while (z <= 50) z *= w[l], c++;     int re = getRemaining(l + 1, r);     if (re >= c)       return 50;     else       return modPow(w[l], re, 100);   }   long long solve(int l, int r, int idx) {     if (r == l + 1) return w[l] % phiChain[idx];     if (phiChain[idx] == 1) return 0;     int remaining = getRemaining(l + 1, r);     if (remaining < 50) return modPow(w[l], remaining, phiChain[idx]);     return modPow(w[l], phiChain[idx + 1] + solve(l + 1, r, idx + 1),                   phiChain[idx]);   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cin >> n >> m;     for (int i = 0; i < (n); i++) cin >> w[i];     phiChain.push_back(m);     while (phiChain.back() > 1) phiChain.push_back(phi(phiChain.back()));     cin >> q;     for (int i = 0; i < (q); i++) {       int l, r;       cin >> l >> r;       l--;       cout << solve(l, r, 0) <<   n ;     }     return 0;   }   