#include <iostream>
#include <string>
#include <array>
using namespace std;
char find(const string& s, int left, int right)
{
// declare an array for all 26 letters and initialize it with 0;
// indexes are alphabet letters
// values are letters appearances
array<int, 26> t{};
// fill in the array with letter count between left & right indexes
for (int i = left; i <= right; ++i)
t[s[i] - 'a']++; // 'a' must be index 0, so we subtract it form current letter
// look for the maximum value the index plus 'a' is the letter - see the table comment
int m = -1, idx = -1;
for (size_t i = 0; i < t.size(); ++i)
{
if (t[i] > m)
{
m = t[i]; // we have a new maximum
idx = i; // remember where the new maximum is
}
}
// the index starts from zero, so we add 'a'
return idx + 'a';
}
int main()
{
//
string s;
if (!(cin >> s))
return -1; // bad input
//
int query_count;
if (!(cin >> query_count))
return -2;
//
for (int i = 0; i < query_count; ++i)
{
int left, right;
if (!(cin >> left >> right))
return -3;
cout << find(s, left, right) << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YXJyYXk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2hhciBmaW5kKGNvbnN0IHN0cmluZyYgcywgaW50IGxlZnQsIGludCByaWdodCkKewogIC8vIGRlY2xhcmUgYW4gYXJyYXkgZm9yIGFsbCAyNiBsZXR0ZXJzIGFuZCBpbml0aWFsaXplIGl0IHdpdGggMDsKICAvLyBpbmRleGVzIGFyZSBhbHBoYWJldCBsZXR0ZXJzCiAgLy8gdmFsdWVzIGFyZSBsZXR0ZXJzIGFwcGVhcmFuY2VzCiAgYXJyYXk8aW50LCAyNj4gdHt9OwoKICAvLyBmaWxsIGluIHRoZSBhcnJheSB3aXRoIGxldHRlciBjb3VudCBiZXR3ZWVuIGxlZnQgJiByaWdodCBpbmRleGVzCiAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkKICAgIHRbc1tpXSAtICdhJ10rKzsgLy8gJ2EnIG11c3QgYmUgaW5kZXggMCwgc28gd2Ugc3VidHJhY3QgaXQgZm9ybSBjdXJyZW50IGxldHRlcgoKICAvLyBsb29rIGZvciB0aGUgbWF4aW11bSB2YWx1ZSB0aGUgaW5kZXggcGx1cyAnYScgaXMgdGhlIGxldHRlciAtIHNlZSB0aGUgdGFibGUgY29tbWVudAogIGludCBtID0gLTEsIGlkeCA9IC0xOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC5zaXplKCk7ICsraSkKICB7CiAgICBpZiAodFtpXSA+IG0pCiAgICB7CiAgICAgIG0gPSB0W2ldOyAvLyB3ZSBoYXZlIGEgbmV3IG1heGltdW0KICAgICAgaWR4ID0gaTsgLy8gcmVtZW1iZXIgd2hlcmUgdGhlIG5ldyBtYXhpbXVtIGlzCiAgICB9CiAgfQoKICAvLyB0aGUgaW5kZXggc3RhcnRzIGZyb20gemVybywgc28gd2UgYWRkICdhJwogIHJldHVybiBpZHggKyAnYSc7Cn0KCgppbnQgbWFpbigpCnsKICAvLwogIHN0cmluZyBzOwogIGlmICghKGNpbiA+PiBzKSkKICAgIHJldHVybiAtMTsgLy8gYmFkIGlucHV0CgogIC8vCiAgaW50IHF1ZXJ5X2NvdW50OwogIGlmICghKGNpbiA+PiBxdWVyeV9jb3VudCkpCiAgICByZXR1cm4gLTI7CgogIC8vCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBxdWVyeV9jb3VudDsgKytpKQogIHsKICAgIGludCBsZWZ0LCByaWdodDsKICAgIGlmICghKGNpbiA+PiBsZWZ0ID4+IHJpZ2h0KSkKICAgICAgcmV0dXJuIC0zOwogICAgY291dCA8PCBmaW5kKHMsIGxlZnQsIHJpZ2h0KSA8PCBlbmRsOwogIH0KCiAgcmV0dXJuIDA7Cn0=