#include using namespace std; void initialize(string s) { // This function is called once before all queries. } int answerQuery(string str) { int maxLength = 1; // The result (length of LPS) int start = 0; int len = str.length(); int low, high; // One by one consider every character as center point of // even and length palindromes for (int i = 1; i < len; ++i) { // Find the longest even length palindrome with center points // as i-1 and i. low = i - 1; high = i; while (low >= 0 && high < len && str[low] == str[high]) { if (high - low + 1 > maxLength) { start = low; maxLength = high - low + 1; } --low; ++high; } // Find the longest odd length palindrome with center // point as i low = i - 1; high = i + 1; while (low >= 0 && high < len && str[low] == str[high]) { if (high - low + 1 > maxLength) { start = low; maxLength = high - low + 1; } --low; ++high; } } return maxLength; } int main() { string s,ra; cin >> s; // initialize(s); int q; cin >> q; for(int a0 = 0; a0 < q; a0++){ int l; int r; cin >> l >> r; ra= s.substr(l-1,r-l); int result = answerQuery(ra); cout << result << endl; } return 0; }