#include <bits/stdc++.h>

#define rep(i, n) for(int i=0; i<(int)(n); i++)
#define FILL0(x) memset(x,0,sizeof(x))
#define FILL1(x) memset(x,-1,sizeof(x))

using namespace std;

typedef long long ll;
typedef pair<ll, ll> P;

template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }
 

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout << fixed << setprecision(20);

    ll b, c;
    cin >> b >> c;

if(b==0 && c==1){
    cout << 1 << endl;
    return 0;
}
    

    ll ans = 1;

    if(b>=0){
        ans += max(0LL,min(2*b-1,c/2));
        ll tmp = max(0LL,min(2*b-1,c/2));
        
        c-=1;
        if(c>-1)    ans++;
        ans += max(0LL,c/2);

        if(tmp+c/2>2*b-1){
            ans+=max(0LL,2*b-1-tmp);
        }else{
            ans+=max(0LL,c/2);
        }

        c-=1;
        ans += max(0LL,c/2);
    }
    else{
        b = abs(b);
        ans += max(0LL,c/2); //-inf
        
        c-=1;
        if(c>-1)    ans++;
        ans += max(0LL,min(2*b-1,c/2));
        ll tmp = max(0LL,min(2*b-1,c/2));
        
        
        c-=1;
        if(tmp+c/2>2*b-1){
            ans+=max(0LL,2*b-1-tmp);
        }else{
            ans+=max(0LL,c/2);
        }
        ans+= max(0LL,c/2); //+inf
        
    }


    cout << ans << endl;

    return 0;

}

#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
#include <tuple>
#include <cstdint>
#include <cstdio>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <deque>
#include <unordered_map>
#include <unordered_set>
#include <bitset>
#include <cctype>
#include <climits>

#define rep(i, n) for(int i = 0; i < n; i++)
#define per(i, n) for(int i = n - 1; i >= 0; i--)
using ll = long long;
#define vi vector<int>
#define vvi vector<vi>
#define vl vector<ll>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define mod 1000000007
using namespace std;
template<class T, class U>
T &chmax(T &a, const U &b){ if(a < b) a = b; return a; }
template<class T, class U>
T &chmin(T &a, const U &b){ if(a > b) a = b; return a; }
int main(){
  int h,w;
  cin >> h >> w;
  vector<vector<char>> a(h, vector<char>(w));
  rep(i, h) rep(j, w) cin >> a[i][j];
  vvi dp(h, vi(w));
  rep(j, w - 1){
    if((h - 1 + j) & 1) dp[h - 1][j] = mod;
    else dp[h - 1][j] = -mod;
  }
  per(i, h) per(j, w){
    if(i > 0){
      //takahashi
      if((i + j) & 1){
        dp[i - 1][j] = dp[i][j] + (a[i][j] == '+' ? 1 : -1);
      }else{
        dp[i - 1][j] = dp[i][j] - (a[i][j] == '+' ? 1 : -1);
      }
    }
    if(j > 0){
      //takahashi
      if((i + j) & 1){
        chmax(dp[i][j - 1], dp[i][j] + (a[i][j] == '+' ? 1 : -1));
      }else{
        chmin(dp[i][j - 1], dp[i][j] - (a[i][j] == '+' ? 1 : -1));
      }
    }
  }
  if(dp[0][0] == 0) cout << "Draw\n";
  else if(dp[0][0] > 0) cout << "Takahashi\n";
  else cout << "Aoki\n";
}