#include #define REP(i, x, n) for(int i = x; i < (int)(n); i++) #define rep(i, n) REP(i, 0, n) #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define F first #define S second #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair P; int memo[15][15][15][15][55]; int rec(int n1, int n2, int n3, int n4, int n, int total) { if(memo[n1][n2][n3][n4][n] != -1) return memo[n1][n2][n3][n4][n]; int rival = total - n1 - n2 - n3 - n4 - n; int res = -1; int tmp; bool flg = false; REP(i, 1, 4) if(n1 >= i) { flg = true; tmp = 1; if(n1 == i) tmp = 2; res = max(res, abs(2 - rec(n1 - i, n2, n3, n4, rival / tmp, total))); } REP(i, 1, 4) if(n2 >= i) { flg = true; tmp = 1; if(n2 == i) tmp = 2; res = max(res, abs(2 - rec(n1, n2 - i, n3, n4, rival / tmp, total))); } REP(i, 1, 4) if(n3 >= i) { flg = true; tmp = 1; if(n3 == i) tmp = 2; res = max(res, abs(2 - rec(n1, n2, n3 - i, n4, rival / tmp, total))); } REP(i, 1, 4) if(n4 >= i) { flg = true; tmp = 1; if(n4 == i) tmp = 2; res = max(res, abs(2 - rec(n1, n2, n3, n4 - i, rival / tmp, total))); } if(!flg) { if(n > rival) res = 2; else if(n < rival) res = 0; else res = 1; } return memo[n1][n2][n3][n4][n] = res; } int main() { // ios_base::sync_with_stdio(false); int n1, n2, n3, n4; cin >> n1 >> n2 >> n3 >> n4; memset(memo, -1, sizeof(memo)); int ans = rec(n1, n2, n3, n4, 0, n1 + n2 + n3 + n4); if(ans == 2) cout << "Taro" << endl; if(ans == 0) cout << "Jiro" << endl; if(ans == 1) cout << "Draw" << endl; return 0; }