#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5;
int s[N],p[N],tr[N*4];
int s1[N],p1[N];
void pushup(int u){
tr[u]=tr[u*2]+tr[u*2+1];
}
void modify(int u,int l,int r,int x){
if(l==r){
tr[u]++;
return;
}
int mid=(l+r)>>1;
if(x<=mid)
modify(u*2,l,mid,x);
else
modify(u*2+1,mid+1,r,x);
pushup(u);
}
int query(int u,int l,int r,int a,int b){
if(a<=l&&r<=b){
return tr[u];
}
int ans=0;
int mid=(l+r)>>1;
if(a<=mid)ans+=query(u*2,l,mid,a,b);
if(mid<b)ans+=query(u*2+1,mid+1,r,a,b);
return ans;
}
signed main(){
ios::sync_with_stdio(0);
int n;
while(cin>>n){
int cnt=0;
for(int i=1;i<=n*n;i++){
cin>>s[i];
p[i]=s[i];
}
sort(p+1,p+1+n*n);
for(int i=1;i<=n*n;i++){
int x=lower_bound(p+1,p+1+n*n,s[i])-p;
cnt+=query(1,1,n*n,x+1,n*n);
modify(1,1,n*n,x);
}
int cnt1=0;
for(int i=1;i<=n*n;i++){
cin>>s1[i];
p1[i]=s1[i];
}
sort(p1+1,p1+1+n);
for(int i=1;i<=n*n;i++){
int x=lower_bound(p1+1,p1+1+n*n,s1[i])-p1;
cnt1+=query(1,1,n*n,x+1,n*n);
modify(1,1,n*n,x);
}
if((cnt&1)==(cnt1&1))puts("TAK");
else puts("NIE");
}
return 0;
}