#include #define rep(i, a) for (int i = 0; i < (a); i++) #define rep2(i, a, b) for (int i = (a); i < (b); i++) #define repr(i, a) for (int i = (a) - 1; i >= 0; i--) #define repr2(i, a, b) for (int i = (b) - 1; i >= (a); i--) using namespace std; typedef long long ll; const ll inf = 1e9; const ll mod = 1e9 + 9; typedef pair P; map>, P> dp; P dfs(P score, vector N) { sort(N.begin(), N.end()); auto key = make_pair(score, N); if (dp.count(key)) return dp[key]; swap(score.first, score.second); if (all_of(N.begin(), N.end(), [](int x) { return x == 0; })) { return score; } P res(-1, inf); rep (j, 4) { rep2 (k, 1, min(4, N[j] + 1)) { N[j] -= k; P p; if (k < N[j]) { p = dfs(P(score.first + k, score.second), N); } else { p = dfs(P(score.first + (score.second + 1) / 2 + k, score.second / 2), N); } swap(p.first, p.second); if (res.first < p.first) { res = p; } else if (res.first == p.first && res.second > p.second) { res = p; } N[j] += k; } } return dp[key] = res; } int main() { vector N(4); rep (i, 4) cin >> N[i]; auto ans = dfs(P(0, 0), N); if (ans.first > ans.second) { cout << "Taro" << endl; } else if (ans.first == ans.second) { cout << "Draw" << endl; } else { cout << "Jiro" << endl; } return 0; }