//~~~~~~~~~~~~~MJ®™~~~~~~~~~~~~~
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx")
#define rep1(n) for(ll i=0; i<(ll)(n); ++i)
#define rep2(i,n) for(ll i=0; i<(ll)(n); ++i)
#define rep3(i,a,b) for(ll i=(ll)(a); i<(ll)(b); ++i)
#define rep4(i,a,b,c) for(ll i=(ll)(a); i<(ll)(b); i+=(c))
#define cut4(a,b,c,d,e,...) e
#define rep(...) cut4(__VA_ARGS__,rep4,rep3,rep2,rep1)(__VA_ARGS__)
#define per1(n) for(ll i=((ll)n)-1; i>=0; --i)
#define per2(i,n) for(ll i=((ll)n)-1; i>=0; --i)
#define per3(i,a,b) for(ll i=((ll)a)-1; i>=(ll)(b); --i)
#define per4(i,a,b,c) for(ll i=((ll)a)-1; i>=(ll)(b); i-=(c))
#define per(...) cut4(__VA_ARGS__,per4,per3,per2,per1)(__VA_ARGS__)
#define ll long long
#define ln cout<<endl
#define int long long
#define vv vector<vi>
#define vp vector<pi>
#define append push_back
#define all(x) (x).begin(),(x).end()
#define allr(x) (x).rbegin(),(x).rend()
#define vi vector<int>
#define ret(x) {cout<<x;return;}
#define ui map<int,int>
#define pi pair<int,int>
#define ff first
#define ss second
using namespace std;
const int INF = 1e18, MOD = 1e9+7, N = (1ll<<23) + 69;
int binary_to_int(string s) {int n = 0; for (int i = 0; i < s.size(); i++) {n = n * 2 + s[i] - '0';} return n;}
// ul graph[N];
bool vis[N];
bool having[N];
vi path;
int st,en;
int n;
// void print()
// {
//     for (int i:path)
//     {
//         cout << i << " ";
//     }
//     ln;
// }
void dfs(int node ,int p)
{
    vis[node]=1;
    // path.append(node);
    for (int j= n-1; j>=0; j--)
    {
        int i = 1<<j ^ node;
        if (!having[i] and !vis[i])
        {
            dfs(i,node);
        }         
    }
    // path.pop_back();
}
void solve()
{
    int  k, m, ans = 0;
    string e, f;
    cin >> n >> k >> e >> f;
    st = binary_to_int(e);
    en = binary_to_int(f);
    vi a(k);
    rep(k)
    {
    	cin >> e;
        a[i]=binary_to_int(e);
        having [a[i]]=1;
    }
    
    dfs(st,-1);
    if (vis[en])
    {
        cout <<"TAK";
    }
    else
    {
        cout <<"NIE";
    }
    
     // cout << ans;
    // cout << a.size();
    // for (auto i: a){cout << i << " ";}
}
signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL); cout.tie(NULL);
    int ans=1;
    //cout<<setprecision(1000);
    // cin>>ans;
    rep(ans){
        // cout << "Case #" << i+1 << ": ";
        solve();ln;}}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |