// https://szkopul.edu.pl/problemset/problem/CfSEK4ACOcAPaAfX29Fp7Tud/site/?key=statement
#include <algorithm>
#include <bitset>
#include <iostream>
#include <queue>
#include <vector>
constexpr int sizik = 5 * 1001, sizik2 = 1000 * 1001;
std::vector<int> kra[sizik];
bool visited[sizik][2];
int values[sizik][2];
void BFS(int v) {
std::queue<std::pair<int, int>> q;
q.push({v, 0});
values[v][0] = 0;
while (!q.empty()) {
const auto [u, s] = q.front();
q.pop();
if (visited[u][s]) {
continue;
}
visited[u][s] = true;
for (const auto& w : kra[u]) {
int local_s = s == 0 ? 1 : 0;
if (!visited[w][local_s]) {
q.push({w, local_s});
values[w][local_s] = values[u][s] + 1;
}
}
}
}
struct Podroz {
int start, end, nr, d;
Podroz(int start1, int end1, int nr1, int d1) {
start = start1;
end = end1;
nr = nr1;
d = d1;
}
};
bool odp[sizik2];
std::vector<Podroz> podroze;
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int n, m, k;
std::cin >> n >> m >> k;
for (int i = 0; i < m; i++) {
int a, b;
std::cin >> a >> b;
kra[a].push_back(b);
kra[b].push_back(a);
}
for (int i = 1; i <= k; i++) {
int s, t, d;
std::cin >> s >> t >> d;
podroze.push_back({s, t, i, d});
}
std::sort(podroze.begin(), podroze.end(), [](const Podroz& p1, const Podroz& p2) { return p1.start < p2.start; });
int i = 0, prev = -1;
while (i < podroze.size()) {
const auto& curr = podroze[i];
if (curr.start == prev) {
auto temp = values[curr.end][(int)(curr.d % 2)];
if (temp == -1) {
odp[curr.nr] = false;
} else if (curr.d >= temp && curr.d % 2 == temp % 2) {
if (temp == 0 && kra[curr.start].size() < 1) {
odp[curr.nr] = false;
} else {
odp[curr.nr] = true;
}
} else {
odp[curr.nr] = false;
}
i++;
} else {
prev = curr.start;
for (int i = 1; i <= n; i++) {
values[i][0] = -1;
values[i][1] = -1;
visited[i][0] = false;
visited[i][1] = false;
}
BFS(curr.start);
}
}
for (int i = 1; i <= k; i++) {
if (odp[i]) {
std::cout << "TAK\n";
} else {
std::cout << "NIE\n";
}
}
return 0;
}