#include <bits/stdc++.h>          
using namespace std;
using ll = long long;
using ld = long double;
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define repp(i, st, en) for (ll i = (ll)st; i < (ll)(en); i++)
#define repm(i, st, en) for (ll i = (ll)st; i >= (ll)(en); i--)
#define all(v) v.begin(), v.end()
template<class in_chmax> void chmax(in_chmax &x, in_chmax y) {x = max(x,y);}
template<class in_chmin> void chmin(in_chmin &x, in_chmin y) {x = min(x,y);}
void Yes() {cout << "Yes" << endl; exit(0);}
void No() {cout << "No" << endl; exit(0);}
template<class in_Cout> void Cout(in_Cout x) {cout << x << endl; exit(0);}
template<class in_vec_cout>
void vec_cout(vector<in_vec_cout> vec) {
    for (in_vec_cout res : vec) {cout << res << " ";}
    cout << endl;
}

const ll inf = 1e18;
const ll mod = 1e9 + 7;

ll H, W;
vector<string> A;

bool is_Takahashi(ll i, ll j) {return (i+j)%2==0;}

void init() {
    cin >> H >> W;
    A.resize(H);
    rep(i,H) cin >> A[i];
}

int main() {
    init();
    vector<vector<ll>> dp(H,vector<ll>(W));
    rep(i,H) rep(j,W) {
        if (is_Takahashi(i,j)) dp[i][j] = -inf;
        else dp[i][j] = inf;
    }
    dp[H-1][W-1] = 0;
    for (ll i=H-1; i>=0; i--) for (ll j=W-1; j>=0; j--) {
        ll add = 0;
        if (is_Takahashi(i,j)) {
            if (i+1<H) {
                if (A[i+1][j]=='+') add = 1;
                else add = -1;
                chmax(dp[i][j],dp[i+1][j]+add);
            }
            if (j+1<W) {
                if (A[i][j+1]=='+') add = 1;
                else add = -1;
                chmax(dp[i][j],dp[i][j+1]+add);
            }
        } else {
            if (i+1<H) {
                if (A[i+1][j]=='+') add = -1;
                else add = 1;
                chmin(dp[i][j],dp[i+1][j]+add);
            }
            if (j+1<W) {
                if (A[i][j+1]=='+') add = -1;
                else add = 1;
                chmin(dp[i][j],dp[i][j+1]+add);
            }
        }
    }

    ll x = dp[0][0];
    if (x>0) Cout("Takahashi");
    else if (x==0) Cout("Draw");
    else Cout("Aoki");
}
#include <bits/stdc++.h>
using namespace std;
 
#define pb push_back
#define FOR(i,f,n) for(int i=f;i<n;i++)
#define FORI(i,f,n) for(int i=f;i>=n;i--)
#define sz(a) ((int)(a).size())
#define ff first
#define ss second
#define all(a) (a).begin(),(a).end()
#define alli(a) (a).rbegin(),(a).rend()
#define approx(a) fixed<<setprecision(a)
#define trav(a,x) for(auto& a : x)
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,bool> pib;
typedef pair<ll,bool> plb;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<ld> vld;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
template <class T> using pq = priority_queue<T>;
template <class T> using pqg = priority_queue<T, vector<T>, greater<T>>;
template <class T> void ckmin(T &a, const T &b) { a = min(a, b); }
template <class T> void ckmax(T &a, const T &b) { a = max(a, b); }
 
template <class T> void read(vector<T> &v);
template <class F, class S> void read(pair<F, S> &p);
template <class T> void read(T &x) {cin>>x;}
template <class R, class... T> void read(R& r, T&... t){read(r); read(t...);};
template <class T> void read(vector<T> &v) {trav(x, v) read(x);}
template <class F, class S> void read(pair<F, S> &p) {read(p.ff, p.ss);}
 
template <class F, class S> void pr(const pair<F, S> &x);
template <class T> void pr(const T &x) {cout<<x;}
template <class R, class... T> void pr(const R& r, const T&... t) {pr(r); pr(t...);}
template <class F, class S> void pr(const pair<F, S> &x) {pr("{", x.ff, ", ", x.ss, "}");}
void ps() {pr("\n");}
template <class T> void ps(const T &x) {pr(x); ps();}
template <class T> void ps(vector<T> &v) {trav(x, v) pr(x, ' '); ps();}
template <class F, class S> void ps(const pair<F, S> &x) {pr(x.ff, ' ', x.ss); ps();}
template <class R, class... T> void ps(const R& r,  const T &...t) {pr(r, ' '); ps(t...);}

const int mod = 998244353;

void solve(){
    int n, k; read(n, k);
    vector<vl> dp(n+1, vl(2*n+1));
    dp[1][1] = 1;
    FOR(i,2,n+1){
        FORI(j,n,1){
            dp[i][j] = (dp[i-1][j-1] + dp[i][2*j]) % mod;
        }
    }
    ps(dp[n][k]);
}

 
 
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
}