// Murabito-B 21/04/12
#include <bits/stdc++.h>
using namespace std;
using ll    = long long;
const int N = 100005;
int n, c[N], cnt[N];
bool good[N];
vector<int> to[N];
void dfs(int u, int fa) {
    if (cnt[c[u]] == 0) good[u] = true;
    cnt[c[u]]++;
    for (int i = 0, v; i < to[u].size(); i++)
        if ((v = to[u][i]) != fa) dfs(v, u);
    cnt[c[u]]--;
}
void solve() {
    cin >> n;
    for (int i = 1; i <= n; ++i) cin >> c[i];
    for (int i = 1, u, v; i < n; ++i) cin >> u >> v, to[u].push_back(v), to[v].push_back(u);
    dfs(1, 0);
    for (int i = 1; i <= n; ++i)
        if (good[i]) cout << i << "\n";
}
int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);
    solve();
    return 0;
}
#include <algorithm>
#include <array>
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <vector>
	
using namespace std;


 

#define enviar {ios_base::sync_with_stdio(false);}
#define aiuda {cin.tie(NULL); cout.tie(NULL);} 

#define F_OR(i, a, b, s) for (int i=(a); (s)>0?i<(b):i>(b); i+=(s))
#define F_OR1(e) F_OR(i, 0, e, 1)
#define F_OR2(i, e) F_OR(i, 0, e, 1)
#define F_OR3(i, b, e) F_OR(i, b, e, 1)
#define F_OR4(i, b, e, s) F_OR(i, b, e, s)
#define GET5(a, b, c, d, e, ...) e
#define F_ORC(...) GET5(__VA_ARGS__, F_OR4, F_OR3, F_OR2, F_OR1)
#define FOR(...) ;F_ORC(__VA_ARGS__)(__VA_ARGS__)
#define EACH(x, a) for (auto& x: a)
#define exacto(v) cout << setprecision(v) << fixed;



#define ll long long
#define lld long double
#define eb emplace_back
#define em emplace
#define ef emplace_front
#define f first
#define s second
#define big greater<ll>()
#define bpc(x) __builtin_popcount(x)
#define bpc2(x) __builtin_clz(x)
#define DIE(args...) {print(args); return;} 

#define ar(v)  array<int,v>
#define all(v) v.begin(), v.end()
#define sz(x) (int)(x).size()
#define meminf(v) memset(v,  0x3f , sizeof(v))
#define mem(v,x) memset(v , x , sizeof v);
#define ai(a, n) for (int ele = 0; ele < n; ele++) cin >> a[ele];
#define ao(a, n) {for (int ele = 0; ele < (n); ele++) { if (ele) cout << " "; cout << a[ele]; } cout << '\n';}
#define readgraph(list, edges) for (int i = 0; i < edges; i++) {int n1, n2; cin >> n1 >> n2; n1--; n2--; list[n1].eb(n2); list[n2].eb(n1);}
 

template <typename T>
struct combinator {
    T t_;
    combinator(T&& t) : t_(std::forward<T>(t)) {}
    
    template <typename... Args>
    auto operator () (Args&&... args) const 
    {
        return t_(*this, std::forward<Args>(args)...);
    }
};


template<class T> bool umin(T& a, const T& b) { return b<a?a=b, 1:0; }
template<class T> bool umax(T& a, const T& b) { return a<b?a=b, 1:0; } 

string to_string(bool b) {return b?"true":"false"; }

string to_string(char c) { return string(1, c);}

string to_string(const char* s) { return string(s); }

string to_string(string s) { return s; }

template<class T> string to_string(T v) { bool f=1; string res; EACH(x, v) { if(!f) res+=' '; f=0; res+=to_string(x); } return res; }

template<class A> void write(A x) { cout << to_string(x); }

void print() { write("\n"); }

template<class H, class... T> void print(const H& h, const T&... t) {  write(h); if(sizeof...(t)) write(' '); print(t...); }




typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef map<ll, ll> mll;
typedef priority_queue<int, std::vector<int>, std::greater<int>> priomin;


const ll mod = 998244353;
const ll maxsize =3e5 + 10;
const ll inf = 0x3f3f3f3f3f3f3f3f ;
// size, caracter

ll c[maxsize];





bool sieve[100];
vll primes(100);

ll m;
void solve()
{
	ll n  ; cin >> n;
	string s, t;
	cin >> s >> t;

	set <ll> st;
	
	reverse(all(t));
	reverse(all(s));
	st.em(0);
	//  2 3 4 6 8 
	//        1
	//        2
	//        3  
	FOR(i , n)
	{
		set<ll> nst;
		if (t[i] == 'A')
		{
			FOR(j , 7)
			{
				ll a = (j*10 + (s[i] - '0') )% 7;
				ll b = (j*10) % 7 ; 
				if ( st.count(a) && st.count(b))	
				{
					nst.em(j);
				}
			}	
		}
		else
		{
			FOR(j , 7)
			{
				ll a = (j*10 + (s[i] - '0') )% 7;
				ll b = (j*10) % 7 ; 
				if ( st.count(a) || st.count(b))	
				{
					nst.em(j);
				}
			}	
			
		}
		st = nst;
	}
	
	//for(ll i : st)
	//{
		//print(i);
	//}
	if (st.count(0)) print("Takahashi");
	else print("Aoki");
	
}


int main(){
	
	enviar aiuda
	
	int tc = 1;
	//cin >> tc;
	 
	
    while(tc--)  solve();
    
	return 0;
} 
	  
	 
 

	 

 
