// https://szkopul.edu.pl/problemset/problem/_eiKtK6ANqMn5Nfl6UNJksjy/site/?key=statement
// Przedsięwzięcie
#include <bits/stdc++.h>
// #define GARY_DBG
#define GARY_LIB
constexpr int sizik = 100 * 1001;
#define int int64_t
#define ar std::array
typedef std::vector<std::vector<int>> _kra;
int t[sizik];
std::vector<int> kra[sizik];
std::vector<int> kra1[sizik];
int wchodzi[sizik];
int dp[sizik];
int granp[sizik];
void solve() {
int n;
std::cin >> n;
for (int i = 1; i <= n; i++) {
int k;
std::cin >> t[i] >> k;
for (int j = 0; j < k; j++) {
int a;
std::cin >> a;
kra[a].push_back(i);
kra1[i].push_back(a);
wchodzi[i]++;
}
}
// topo sort!
int ile = 0;
std::queue<int> kolejka;
std::vector<int> kolejnosc;
for (int i = 1; i <= n; i++) {
if (wchodzi[i] == 0) {
kolejka.push(i);
ile++;
}
}
while (!kolejka.empty()) {
int i = kolejka.front();
kolejnosc.push_back(i);
kolejka.pop();
for (const auto& a : kra[i]) {
if (--wchodzi[a] == 0) {
kolejka.push(a);
ile++;
}
}
}
if (ile != n) {
std::cout << "CYKL\n";
return;
}
// jest jakaś odp.
// policz dp
int ansix = 0;
for (const auto& a : kolejnosc) {
int v = 0;
for (const auto& b : kra1[a]) {
v = std::max(v, dp[b]);
}
dp[a] = t[a] + v;
ansix = std::max(ansix, dp[a]);
}
std::reverse(kolejnosc.begin(), kolejnosc.end());
for (const auto& a : kolejnosc) {
if (kra[a].empty()) {
granp[a] = ansix - dp[a];
} else {
granp[a] = INT64_MAX;
for (const auto& e : kra[a]) {
granp[a] = std::min(granp[a], dp[e] - dp[a] - t[e] + granp[e]);
}
}
}
std::cout << ansix << '\n';
int q;
std::cin >> q;
for (; q > 0; q--) {
int a, b;
std::cin >> a >> b;
if (b > granp[a]) {
std::cout << "TAK\n";
} else {
std::cout << "NIE\n";
}
}
}
int32_t main() {
#ifndef GARY_DBG
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
#endif
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}