#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m, k;
cin >> n >> m >> k;
vector<vector<int>> g(n);
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
--a;
--b;
g[a].push_back(b);
g[b].push_back(a);
}
const uint16_t INF = 65535;
vector<uint16_t> distance((size_t)n * n * 2, INF);
vector<uint16_t> d(2 * n);
queue<int> q;
for (int s = 0; s < n; s++) {
fill(d.begin(), d.end(), INF);
while (!q.empty())
q.pop();
d[0 * n + s] = 0;
q.push(0 * n + s);
while (!q.empty()) {
int st = q.front();
q.pop();
int par = st / n;
int v = st % n;
uint16_t current = d[st];
for (int t : g[v]) {
int ns = (1 - par) * n + t;
if (d[ns] == INF) {
d[ns] = (uint16_t)(current + 1);
q.push(ns);
}
}
}
for (int j = 0; j < n; j++) {
size_t b = ((size_t)s * n + (size_t)j) * 2;
distance[b + 0] = d[0 * n + j];
distance[b + 1] = d[1 * n + j];
}
}
for (int i = 0; i < k; i++) {
int s, j;
long long D;
cin >> s >> j >> D;
--s;
--j;
int par = (int)(D % 1LL);
uint16_t need = distance[((size_t)s * n + (size_t)j) * 2 + par];
if (need != INF && D >= need)
cout << "TAK\n";
else
cout << "NIE\n";
}
return 0;
}