func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100100;   int n, q;   long long int m;   vector<long long int> mods;   long long int w[N];   long long int phi(long long int x) {     long long int ans = x;     for (long long int i = 2; i * i <= x; i++) {       if (x % i == 0) {         ans -= ans / i;         while (x % i == 0) {           x /= i;         }       }     }     if (x > 1) {       ans -= ans / x;     }     return ans;   }   long long int magic(long long int x, long long int mod) {     if (x < 50) {       return x;     }     return 32 + (x - 32) % mod;   }   long long int fexp(long long int base, long long int e, long long int mod) {     long long int ans = 1;     while (e > 0) {       if (e & 1) {         ans = magic(ans * base, mod);       }       base = magic(base * base, mod);       e >>= 1;     }     return ans;   }   long long int go(int l, int r, int on) {     if (r == l) {       return magic(w[l], mods[on]);     }     if (mods[on] == 1) {       return magic(w[l], mods[on]);     }     long long int e = go(l + 1, r, on + 1);     return fexp(w[l], e, mods[on]);   }   int main() {     ios::sync_with_stdio(false);     cin.tie(nullptr);     cin >> n >> m;     mods.push_back(m);     while (mods.back() != 1) {       mods.push_back(phi(mods.back()));     }     for (int i = 0; i < n; i++) {       cin >> w[i];     }     cin >> q;     while (q--) {       int l, r;       cin >> l >> r;       l--;       r--;       cout << go(l, r, 0) % mods[0] << endl;     }     return 0;   }   