#include <bits/stdc++.h>
using namespace std;

int main() {
  int N;
  long long int T;
  cin >> N >> T;
  vector<long long int> A(N);
  for (int i = 0; i < N; i++) cin >> A.at(i);
  
  vector<long long int> B, C;
  for (int i = 0; i < N; i++) {
    if (i % 2 == 0) B.push_back(A.at(i));
    else C.push_back(A.at(i));
  }
  
  int M = B.size();
  vector<long long int> D;
  for (int bit = 0; bit < (1 << M); bit++) {
    long long int S = 0;
    for (int i = 0; i < M; i++) {
      if (bit & (1 << i)) S += B.at(i);
    }
    D.push_back(S);
  }
  sort(D.begin(), D.end());
  D.erase(unique(D.begin(), D.end()), D.end());
  
  int L = C.size(), K = D.size();
  long long int ans = 0;
  for (int bit = 0; bit < (1 << L); bit++) {
    long long int S = 0;
    for (int i = 0; i < L; i++) {
      if (bit & (1 << i)) S += C.at(i);
    }
    if (S > T) continue;
    int left = 0, right = K;
    while (right - left > 1) {
      int mid = (left + right) / 2;
      if (D.at(mid) + S <= T) left = mid;
      else right = mid;
    }
    ans = max(ans, D.at(left) + S);
  }
  
  cout << ans << endl;
}
#include <bits/stdc++.h>
using namespace std;

int h, w;
string ast;
int a[2009][2009];
int max2 = 4009;
int mem[2009][2009];

int opt(int i, int j) {
	if (mem[i][j] != max2) return mem[i][j];
	if (i == h && j == w) return mem[i][j] = 0;
	if ( ( i + j ) % 2 == 0 ) {
		if (i+1>h) return mem[i][j] = opt(i, j+1) + a[i][j+1];
		else if (j+1>w) return mem[i][j] = opt(i+1, j) + a[i+1][j];
		else return mem[i][j] = max(opt(i, j+1) + a[i][j+1], opt(i+1, j) + a[i+1][j]);
	} else {
		if (i+1>h) return mem[i][j] = opt(i, j+1) - a[i][j+1];
		else if (j+1>w) return mem[i][j] = opt(i+1, j) - a[i+1][j];
		else return mem[i][j] = min(opt(i, j+1) - a[i][j+1], opt(i+1, j) - a[i+1][j]);
	}
}

int main() {
	cin >> h >> w;

	for (int i = 1; i <= h; ++i) {
		cin >> ast;
		for (int j = 1; j <= w; ++j) {
			mem[i][j] = max2;
			if (ast[j-1] == '+') a[i][j] = 1;
			else a[i][j] = -1;
		}
	}

	int ans = opt(1,1);
	if (ans < 0) cout << "Aoki" << endl;
	else if (ans > 0) cout << "Takahashi" << endl;
	else cout << "Draw" << endl;



	return 0;
}
