#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
#define rep(i,n) for(int i=0;i<n;i++)
#define mod 1000000007
#define mad(a,b) a=(a+b)%mod
#define N 1010
ll mem[2][N][N];
bool solve(bool x,ll a,ll b){
	if(~mem[x][a][b])return mem[x][a][b];
	if(a+b==1)return 1;
	bool res=0;
	if(x==1)res|=(solve(0,a,b)==0);
	if(a>=2)res|=(solve(x,a-2,b+1)==0);
	if(a>=1&&b>=1)res|=(solve(x^1,a,b-1)==0);
	if(b>=2)res|=(solve(x^1,a,b-1)==0);
	//cout<<"solve"<<x<<" "<<a<<" "<<b<<" "<<res<<endl;
	return mem[x][a][b]=res;
}

ll n;
vector<ll> g[N];
bool vis[N];
ll cnt;
void dfs(ll x){
	if(vis[x])return;
	cnt++;
	vis[x]=1;
	for(auto y:g[x])dfs(y);
}
int main(){
	cin>>n;
	ll x=0,a=0,b=0;
	rep(i,n)rep(j,n){
		char c; cin>>c;
		if(c=='Y'){
			g[i].push_back(j);
			if(i<j)x--;
		}
	}
	rep(i,n)vis[i]=0;
	rep(i,n){
		if(!vis[i]){
			cnt=0;
			dfs(i);
			x+=cnt*(cnt-1)/2;
			if(cnt%2==1)a++;
			if(cnt%2==0)b++;
		}
	}
	x%=2;
	rep(i,n+1)rep(j,n+1)rep(k,2)mem[k][i][j]=-1;
	cout<<(solve(x,a,b)?"Taro":"Hanako")<<endl;
}


