185a20364ed579deb8aa078554c36aee7a5794f95178da07c7053a854574e1a3
// https://szkopul.edu.pl/problemset/problem/fYzoFHo_2JRG4FQSt5UPRpn5/site/?key=statement
#include <bits/stdc++.h>
// #define GARY_DBG
#define GARY_LIB
constexpr int sizik = 1000 * 1001;
#define ar std::array
typedef std::vector<std::vector<int>> _kra;
std::vector<std::pair<int, int>> kra[sizik];
int ans[sizik];
int visited[sizik], curr, e, V;
int sp[sizik], curr_sp;
int sp_num[sizik];
void DFS(int v, int p) {
if (visited[v] == curr) return;
visited[v] = curr;
V++;
sp[curr_sp]++;
sp_num[v] = curr_sp;
for (const auto& [u, _] : kra[v]) {
if (v <= u) e++;
if (u == p) continue;
DFS(u, v);
}
}
int in[sizik];
constexpr int MOD = 1e9 + 7;
int binpow(int a, int b) {
int ans = 1;
for (int i = 0; i < b; i++) {
ans = (ans * 2) % MOD;
}
return ans;
}
void solve() {
int n;
std::cin >> n;
for (int i = 1; i <= n; i++) {
char c;
std::cin >> c;
if (c == 'T') {
int x;
std::cin >> x;
kra[x].push_back({x, i});
ans[i] = x;
} else {
int a, b;
std::cin >> a >> b;
kra[a].push_back({b, i});
kra[b].push_back({a, i});
}
}
for (int i = 1; i <= n; i++) {
if (kra[i].empty()) {
std::cout << "NIE\n0\n";
return;
}
}
curr++;
for (int i = 1; i <= n; i++) {
if (visited[i] != curr) {
e = 0, V = 0;
curr_sp++;
DFS(i, -1);
if (e != V) {
std::cout << "NIE\n0\n";
return;
}
}
}
std::queue<int> q;
for (int i = 1; i <= n; i++) {
in[i] = kra[i].size();
}
for (int i = 1; i <= n; i++) {
if (in[i] == 1) q.push(i);
}
while (!q.empty()) {
int y = q.front();
q.pop();
sp[sp_num[y]]--;
for (const auto& [u, i] : kra[y]) {
if (ans[i] == 0) ans[i] = y;
if (--in[u] == 1) {
q.push(u);
}
}
}
// ss
int k = 0;
for (int i = 1; i <= curr_sp; i++) {
if (sp[i] > 1) {
k++;
}
}
if (k == 0) {
std::cout << "TAK\n";
for (int i = 1; i <= n; i++) {
std::cout << ans[i] << '\n';
}
return;
}
std::cout << "NIE\n";
std::cout << binpow(2, k) << '\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;
}