include <bits/stdc++.h>
using namespace std;
class PalindromicSubstring {
private:
int length;
string text;
int *r;
public:
PalindromicSubstring(const string &text) {
this->text = " ";
for (int i = 0; i < text.length(); i++) {
this->text += text[i];
this->text += '#';
}
this->length = (int) (2 * text.length() - 1);
this->r = new int[this->length + 1];
}
virtual ~PalindromicSubstring() {
delete[] r;
}
void computeRadius();
void printRadius();
bool isPalindrome(int p, int q);
};
void PalindromicSubstring::computeRadius() {
int farPos = 1, cur = 2;
r[1] = 0;
while (cur <= length) {
if (farPos + r[farPos] < cur) {
r[cur] = 0;
while (cur + r[cur] <= length && cur - r[cur] >= 1 && text[cur + r[cur]] == text[cur - r[cur]]) r[cur]++;
r[cur]--;
farPos = cur;
} else {
int opp = 2 * farPos - cur;
if (cur + r[opp] < farPos + r[farPos]) {
r[cur] = r[opp];
} else {
r[cur] = farPos + r[farPos] - cur;
while (cur + r[cur] <= length && cur - r[cur] >= 1 && text[cur + r[cur]] == text[cur - r[cur]])
r[cur]++;
r[cur]--;
farPos = cur;
}
}
cur++;
}
}
void PalindromicSubstring::printRadius() {
for (int i = 1; i <= PalindromicSubstring::length; i++) {
cout << text[i];
}
cout << endl;
for (int i = 1; i <= PalindromicSubstring::length; i++) {
cout << r[i];
}
cout << endl;
}
bool PalindromicSubstring::isPalindrome(int p, int q) {
p = 2 * p - 1;
q = 2 * q - 1;
if (r[(p + q) / 2] >= (q - p) / 2) {
return true;
} else {
return false;
}
}
int main() {
ios_base::sync_with_stdio(false);
int z;
cin >> z;
while (z--) {
string w;
cin >> w;
PalindromicSubstring palindromicSubstring(w);
palindromicSubstring.computeRadius();
int q;
cin >> q;
while (q--) {
int a, b;
cin >> a >> b;
cout << (palindromicSubstring.isPalindrome(a, b) ? "TAK" : "NIE") << endl;
}
}
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}