1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <bits/stdc++.h>

using namespace std;

int n,m,x,k,r,c,z,a,b;
bool w,ww;
vector < vector<bool> > t;
vector <bool> v;

void dfs(int a, int b)
{
	if (a==n || b==m) return;
	if (t[a][b]==0) return;
	if (a==n-1 && b==m-1) ww=1;
	if (ww==1) return;
	dfs(a,b+1);
	if (ww==1) return; 
	dfs(a+1,b);
}

void dfs2(int a, int b)
{
	if (a==n || b==m || t[a][b]==0) return;
	if (a>0 && b>0)
	{
		if (t[a-1][b]==1 || t[a][b-1]==1) return;
		else if (t[a][b]==1) t[a][b]=0;
	}
	if (a==0)
	{
		if (t[a][b-1]==0) t[a][b]=0;
		else return;
	}
	if (b==0)
	{
		if (t[a-1][b]==0) t[a][b]=0;
		else return;
	}
	dfs2(a+1,b);
	dfs2(a,b+1);
}

int main()
{
	scanf("%d%d",&n,&m);
	for (int i=0; i<n; i++)
	{
		for (int j=0; j<m; j++)
		{
			v.push_back(1);
		}
		t.push_back(v);
	}
	scanf("%d",&k);
	for (int i=0; i<k; i++)
	{
		scanf("%d%d%d",&r,&c,&z);
		a=r^x;
		b=c^x;
		a%=n;
		b%=m;
		t[a][b]=0;
		ww=0;
		dfs(0,0);
		if (ww==0)
		{
			t[a][b]=1;
			x^=z;
			printf("TAK\n");
		}
		else
		{
			dfs2(a,b+1);
			dfs2(a+1,b);
			printf("NIE\n");
		}
	}
}