func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1e9 + 7;   const long long dx[4] = {-1, 1, 0, 0};   const long long dy[4] = {0, 0, -1, 1};   const long long MAX = 5e3 + 5;   long long gcd(long long a, long long b) { return (b == 0 ? a : gcd(b, a % b)); }   long long n, m, ans, k, Q;   string second;   bool pal[MAX][MAX];   long long cnt[MAX][MAX];   void solve() {     for (int i = 0; i < n; ++i) pal[i][i] = cnt[i][i] = true;     for (int i = 0; i < n - 1; ++i) {       if (second[i] == second[i + 1]) pal[i][i + 1] = true, cnt[i][i + 1] = 1;       cnt[i][i + 1] += 2;     }     for (int len = 3; len <= n; ++len)       for (int i = 0; i < n - len + 1; ++i) {         int j = i + len - 1;         if (second[i] == second[j] && pal[i + 1][j - 1])           pal[i][j] = true;         else           pal[i][j] = false;         cnt[i][j] = pal[i][j] + cnt[i][j - 1] + cnt[i + 1][j] - cnt[i + 1][j - 1];       }   }   signed main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cin >> second;     n = second.length();     solve();     cin >> Q;     while (Q--) {       int lo, hi;       cin >> lo >> hi;       --lo;       --hi;       cout << cnt[lo][hi] <<   n ;     }     return 0;   }   