stablegradients/pie-gem5-bysrc huggingface dataset:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b;

cin>>a>>b;

if(a==1&&a!=b)

    cout<<"Alice\n";

 if(a>b&&b!=1)

    cout<<"Alice\n";

if(b>a&&a!=1)

cout<<"Bob\n";

if(b==1&&a!=b)

    cout<<"Bob\n";

    if(a==b)

        cout<<"Draw\n";

return 0;











}


// Optimized solution to the same problem (faster):
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#include <map>

#include <set>

#include <vector>

#include <functional>

#include <algorithm>

#include <stack>

#include <list>

#include <queue>

//#include <iostream>

//#include <sstream>

using namespace std;

#define all(cont) cont.begin(), cont.end()

#define rall(cont) cont.end(), cont.begin()

#define mp make_pair

#define pb push_back

#define fs first

#define sc second

#define pf printf

#define sf scanf

#define fr(i, a, b) for(int i = a ; i < b ; i++)

#define frr(i, a, b) for(int i = a ; i >= b ; i--)

#define tr(it, var) for(__typeof(var.begin()) it = var.begin(); it != var.end(); it++)

#define trr(rit, var) for(__typeof(var.rbegin()) rit = var.rbegin(); rit != var.rend(); rit++)

#define its(x) static_cast< ostringstream & >( ( ostringstream() << dec << x ) ).str()

#define boost ios_base::sync_with_stdio(false); cin.tie(NULL)

#define deb(x) cout << #x" = " << x << '\n'

#define debd(x) pf("%s = %d\n", #x, x)

#define debs(x) pf("%s = %s\n", #x, s)

#define debll(x) pf("%s = %lld\n", #x, x)

#define has(cont, x) ((cont).find((x)) != (cont).end())

#define sz(x) ((int)(x).size())

//typedef

typedef long long ll;

typedef unsigned long long ull;

typedef long double ld;

typedef pair<int, int> pii;

typedef pair<ll, ll> pll;

typedef vector<int> vi;

//bitmask

int onbit(int x, int pos) {x |= (1 << pos); return pos;}

int offbit(int x, int pos) {x &= ~(1 << pos); return x;}

int test(int x, int pos) {return x & (1 << pos);}

int flip(int x, int pos) {x ^= (1 << pos); return x;}

int lsb(int x) {return x & (-x);}

int onbitall(int x, int pos) {x = (1 << pos)-1; return x;}

//constants

const double EPS = 1e-9;

const double PI = 2*acos(0.0);

const int INF = 0x3f3f3f3f;

const int MOD = 1e9+7;

//moves

const int dx1[] = {0, 1, 0, -1};

const int dy1[] = {1, 0, -1, 0};

const int dx2[] = {-1, -1, -1, 0, 0, 1, 1, 1};

const int dy2[] = {-1, 0, 1, -1, 1, -1, 0, 1};





int main() {

//    freopen("input.in", "r", stdin);

	int a, b;

	sf("%d %d", &a, &b);

	if(a == 1) a+= INF;

	if(b == 1) b += INF;

	bool draw = (a==b);

	

	if(draw) puts("Draw");

	else puts(a > b ? "Alice" : "Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

int main()

{

    int a,b;

    cin>>a>>b;

    if(a==b)

        cout<<"Draw"<<endl;

    else if(a==1)

        cout<<"Alice"<<endl;

    else if(b==1)

        cout<<"Bob"<<endl;

    else if(a>b)

        cout<<"Alice"<<endl;

    else if(b>a)

        cout<<"Bob"<<endl;





    return 0;

}




// Optimized solution to the same problem (faster):
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#include <map>

#include <set>

#include <vector>

#include <functional>

#include <algorithm>

#include <stack>

#include <list>

#include <queue>

//#include <iostream>

//#include <sstream>

using namespace std;

#define all(cont) cont.begin(), cont.end()

#define rall(cont) cont.end(), cont.begin()

#define mp make_pair

#define pb push_back

#define fs first

#define sc second

#define pf printf

#define sf scanf

#define fr(i, a, b) for(int i = a ; i < b ; i++)

#define frr(i, a, b) for(int i = a ; i >= b ; i--)

#define tr(it, var) for(__typeof(var.begin()) it = var.begin(); it != var.end(); it++)

#define trr(rit, var) for(__typeof(var.rbegin()) rit = var.rbegin(); rit != var.rend(); rit++)

#define its(x) static_cast< ostringstream & >( ( ostringstream() << dec << x ) ).str()

#define boost ios_base::sync_with_stdio(false); cin.tie(NULL)

#define deb(x) cout << #x" = " << x << '\n'

#define debd(x) pf("%s = %d\n", #x, x)

#define debs(x) pf("%s = %s\n", #x, s)

#define debll(x) pf("%s = %lld\n", #x, x)

#define has(cont, x) ((cont).find((x)) != (cont).end())

#define sz(x) ((int)(x).size())

//typedef

typedef long long ll;

typedef unsigned long long ull;

typedef long double ld;

typedef pair<int, int> pii;

typedef pair<ll, ll> pll;

typedef vector<int> vi;

//bitmask

int onbit(int x, int pos) {x |= (1 << pos); return pos;}

int offbit(int x, int pos) {x &= ~(1 << pos); return x;}

int test(int x, int pos) {return x & (1 << pos);}

int flip(int x, int pos) {x ^= (1 << pos); return x;}

int lsb(int x) {return x & (-x);}

int onbitall(int x, int pos) {x = (1 << pos)-1; return x;}

//constants

const double EPS = 1e-9;

const double PI = 2*acos(0.0);

const int INF = 0x3f3f3f3f;

const int MOD = 1e9+7;

//moves

const int dx1[] = {0, 1, 0, -1};

const int dy1[] = {1, 0, -1, 0};

const int dx2[] = {-1, -1, -1, 0, 0, 1, 1, 1};

const int dy2[] = {-1, 0, 1, -1, 1, -1, 0, 1};





int main() {

//    freopen("input.in", "r", stdin);

	int a, b;

	sf("%d %d", &a, &b);

	if(a == 1) a+= INF;

	if(b == 1) b += INF;

	bool draw = (a==b);

	

	if(draw) puts("Draw");

	else puts(a > b ? "Alice" : "Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

int main()

{

    int a,b;

    cin>>a>>b;

    if(a>b)

    {

        if(b==1 && b<a)

        {

            cout<<"Bob"<<endl;

        }

        else

            cout<<"Alice"<<endl;

    }

    else if(a<b)

    {

        if(a==1 && a<b)

        {

            cout<<"Alice"<<endl;

        }

        else

            cout<<"Bob"<<endl;

    }

    else

        cout<<"Draw"<<endl;

}


// Optimized solution to the same problem (faster):
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#include <map>

#include <set>

#include <vector>

#include <functional>

#include <algorithm>

#include <stack>

#include <list>

#include <queue>

//#include <iostream>

//#include <sstream>

using namespace std;

#define all(cont) cont.begin(), cont.end()

#define rall(cont) cont.end(), cont.begin()

#define mp make_pair

#define pb push_back

#define fs first

#define sc second

#define pf printf

#define sf scanf

#define fr(i, a, b) for(int i = a ; i < b ; i++)

#define frr(i, a, b) for(int i = a ; i >= b ; i--)

#define tr(it, var) for(__typeof(var.begin()) it = var.begin(); it != var.end(); it++)

#define trr(rit, var) for(__typeof(var.rbegin()) rit = var.rbegin(); rit != var.rend(); rit++)

#define its(x) static_cast< ostringstream & >( ( ostringstream() << dec << x ) ).str()

#define boost ios_base::sync_with_stdio(false); cin.tie(NULL)

#define deb(x) cout << #x" = " << x << '\n'

#define debd(x) pf("%s = %d\n", #x, x)

#define debs(x) pf("%s = %s\n", #x, s)

#define debll(x) pf("%s = %lld\n", #x, x)

#define has(cont, x) ((cont).find((x)) != (cont).end())

#define sz(x) ((int)(x).size())

//typedef

typedef long long ll;

typedef unsigned long long ull;

typedef long double ld;

typedef pair<int, int> pii;

typedef pair<ll, ll> pll;

typedef vector<int> vi;

//bitmask

int onbit(int x, int pos) {x |= (1 << pos); return pos;}

int offbit(int x, int pos) {x &= ~(1 << pos); return x;}

int test(int x, int pos) {return x & (1 << pos);}

int flip(int x, int pos) {x ^= (1 << pos); return x;}

int lsb(int x) {return x & (-x);}

int onbitall(int x, int pos) {x = (1 << pos)-1; return x;}

//constants

const double EPS = 1e-9;

const double PI = 2*acos(0.0);

const int INF = 0x3f3f3f3f;

const int MOD = 1e9+7;

//moves

const int dx1[] = {0, 1, 0, -1};

const int dy1[] = {1, 0, -1, 0};

const int dx2[] = {-1, -1, -1, 0, 0, 1, 1, 1};

const int dy2[] = {-1, 0, 1, -1, 1, -1, 0, 1};





int main() {

//    freopen("input.in", "r", stdin);

	int a, b;

	sf("%d %d", &a, &b);

	if(a == 1) a+= INF;

	if(b == 1) b += INF;

	bool draw = (a==b);

	

	if(draw) puts("Draw");

	else puts(a > b ? "Alice" : "Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main()

{

    int a,b;

    cin>>a>>b;

    if(a==b)

        cout<<"Draw"<<endl;



      else if(a!=1&&b!=1){

       if(a>b)

       cout<<"Alice"<<endl;

       else

        cout<<"Bob"<<endl;}

        else if(a==1)

            cout<<"Alice"<<endl;

         else if(b==1)

            cout<<"Bob"<<endl;

   }


// Optimized solution to the same problem (faster):
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

#include <map>

#include <set>

#include <vector>

#include <functional>

#include <algorithm>

#include <stack>

#include <list>

#include <queue>

//#include <iostream>

//#include <sstream>

using namespace std;

#define all(cont) cont.begin(), cont.end()

#define rall(cont) cont.end(), cont.begin()

#define mp make_pair

#define pb push_back

#define fs first

#define sc second

#define pf printf

#define sf scanf

#define fr(i, a, b) for(int i = a ; i < b ; i++)

#define frr(i, a, b) for(int i = a ; i >= b ; i--)

#define tr(it, var) for(__typeof(var.begin()) it = var.begin(); it != var.end(); it++)

#define trr(rit, var) for(__typeof(var.rbegin()) rit = var.rbegin(); rit != var.rend(); rit++)

#define its(x) static_cast< ostringstream & >( ( ostringstream() << dec << x ) ).str()

#define boost ios_base::sync_with_stdio(false); cin.tie(NULL)

#define deb(x) cout << #x" = " << x << '\n'

#define debd(x) pf("%s = %d\n", #x, x)

#define debs(x) pf("%s = %s\n", #x, s)

#define debll(x) pf("%s = %lld\n", #x, x)

#define has(cont, x) ((cont).find((x)) != (cont).end())

#define sz(x) ((int)(x).size())

//typedef

typedef long long ll;

typedef unsigned long long ull;

typedef long double ld;

typedef pair<int, int> pii;

typedef pair<ll, ll> pll;

typedef vector<int> vi;

//bitmask

int onbit(int x, int pos) {x |= (1 << pos); return pos;}

int offbit(int x, int pos) {x &= ~(1 << pos); return x;}

int test(int x, int pos) {return x & (1 << pos);}

int flip(int x, int pos) {x ^= (1 << pos); return x;}

int lsb(int x) {return x & (-x);}

int onbitall(int x, int pos) {x = (1 << pos)-1; return x;}

//constants

const double EPS = 1e-9;

const double PI = 2*acos(0.0);

const int INF = 0x3f3f3f3f;

const int MOD = 1e9+7;

//moves

const int dx1[] = {0, 1, 0, -1};

const int dy1[] = {1, 0, -1, 0};

const int dx2[] = {-1, -1, -1, 0, 0, 1, 1, 1};

const int dy2[] = {-1, 0, 1, -1, 1, -1, 0, 1};





int main() {

//    freopen("input.in", "r", stdin);

	int a, b;

	sf("%d %d", &a, &b);

	if(a == 1) a+= INF;

	if(b == 1) b += INF;

	bool draw = (a==b);

	

	if(draw) puts("Draw");

	else puts(a > b ? "Alice" : "Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

const long long N = 1e6;

int d()

{

    int ret;

    scanf("%d", &ret);

    return ret;

}

long long lld()

{

    long long ret;

    scanf("%lld", &ret);

    return ret;

}

bool cmp(pair<int, int> s, pair<int, int> f)

{

    if (f.first > s.first)

        return true;

    else if (f.first == f.second && f.second < s.second)

        return true;

    else

        return false;

}

long long fact(long long n)

{

    if(n==1)

        return 1;

    return n * fact(n-1);

}

pair<int ,char>p;

pair<int ,char>p1;

pair<int ,char>p2;

int main(){

    int a=d(),b=d();

    if(a==b){

    printf("Draw\n");

    return 0;

    }

    if((a>b && b!=1) || (a<b && a==1)){

    printf("Alice\n");

    return 0;

    }

    if((b>a && a!=1)||(b<a && b==1)){

     printf("Bob\n");

     return 0;

    }







}


// Optimized solution to the same problem (faster):
#include<stdio.h>



int bian(int x){

	if(x == 1) x  = 14;

	return x;

}



int main(){

	int a,b;

	scanf("%d %d",&a,&b);

	a = bian(a);

	b = bian(b);

	if(a == b) printf("Draw");

	if(a > b) printf("Alice");

	if(a < b) printf("Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

int main() {

 int a,b;



 

 cin>>a>>b;

 if(a==b)

	cout<<"Draw";

	else if(a==1)

	cout<<"Alice";

	else if(b==1)

	cout<<"Bob";

else  if((a>b))

	cout<<"Alice";

else if((a<b))

	cout<<"Bob";;;





 



	return 0;

}

// Optimized solution to the same problem (faster):
#include<stdio.h>



int bian(int x){

	if(x == 1) x  = 14;

	return x;

}



int main(){

	int a,b;

	scanf("%d %d",&a,&b);

	a = bian(a);

	b = bian(b);

	if(a == b) printf("Draw");

	if(a > b) printf("Alice");

	if(a < b) printf("Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

int main()

{

    int A, B;

    cin >> A >> B;

    if(A==1 && B==1) A = 14, B=14;

    else if(A==1) A = 14;

    else if(B==1) B = 14;

    if(A>B)

        cout << "Alice" << endl;

    else if(B>A)

        cout << "Bob" << endl;

    else 

        cout << "Draw" << endl;

    

    return 0;

}

// Optimized solution to the same problem (faster):
#include<stdio.h>



int bian(int x){

	if(x == 1) x  = 14;

	return x;

}



int main(){

	int a,b;

	scanf("%d %d",&a,&b);

	a = bian(a);

	b = bian(b);

	if(a == b) printf("Draw");

	if(a > b) printf("Alice");

	if(a < b) printf("Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

long long a,b;

int main()

{

	cin>>a>>b;

	if(a==1)a=14;

	if(b==1)b=14;

	if(a>b)cout<<"Alice";

	if(a<b)cout<<"Bob";

	if(a==b)cout<<"Draw";

	cout<<endl;

    return 0;

}

// Optimized solution to the same problem (faster):
#include<cstdio>

using namespace std;

int main()

{

    int a,b;

    scanf("%d%d",&a,&b);

    if(a==1)

    {

        a=14;

        

    }

    if(b==1)

    {

        b=14;

    }

    if(a>b)

    {

        printf("Alice\n");

    }

    else

    if(a<b)

    {

        printf("Bob\n");

    }

    else

    {

        printf("Draw\n");

    }

    return 0;

    

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main() {

	int a,b;

	cin>>a>>b;

	if(a==1)

		a=123123;

	if(b==1)

		b=123123;

	if(a>b)

		printf("Alice");

	if(a<b)

		printf("Bob");

	if(a==b)

		printf("Draw");

	return 0;

}

// Optimized solution to the same problem (faster):
#include<cstdio>

using namespace std;

int a,b;

int main(){

	scanf("%d%d",&a,&b);

	if(a==1)  a=14;

	if(b==1)  b=14;

	if(a>b)  printf("Alice");

	if(a==b)  printf("Draw");

	if(a<b)  printf("Bob");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):


#include <bits/stdc++.h>

using namespace std;



#define ri reverse_iterator

#define pq priority_queue

#define pi 2.0*acos(0.0)

#define mp make_pair

#define ub upper_bound

#define er equal_range

#define nl '\n'

#define F first

#define lb lower_bound

#define mem(a, b) memset(a, b, sizeof(a))

#define Q queue

#define S second

#define pb push_back

#define inp freopen("in.txt", "r", stdin)

#define out freopen("out.txt", "w", stdout)



typedef long long ll;

typedef unsigned long long ull;

typedef pair <int, int> pii;

typedef pair <long long, long long> pll;

typedef pair <long long, int> pli;



int main()

{

    ios_base :: sync_with_stdio(false);

    int a, b;

    cin >> a >> b;



    if(a == b) cout << "Draw";

    else if (a == 1) cout << "Alice";

    else if(b == 1) cout << "Bob";

    else if(a > b) cout << "Alice";

    else cout << "Bob";



    return 0;

}


// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <string>

#include <cmath>

#include <algorithm>

#include <vector>

#include <map>

#include <queue>

#include <set>

using namespace std;

typedef long long LL;

const int MaxN = 1e5;

const int Inf = 1 << 30;



int a[MaxN + 5];



int main()

{

	int A,B;

	while(~scanf("%d%d",&A,&B)){

		A = A == 1 ? 14 : A;

		B = B == 1 ? 14 : B;

		if(A > B) printf("Alice\n");

		else if(A < B) printf("Bob\n");

		else printf("Draw\n");

	}

    return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;



int main(){

    int a,b,c;

    cin>>a>>b;

    if(a==1)a=14;

    if(b==1)b=14;

    if(a>b)cout<<"Alice"<<endl;

    else if(b>a)cout<<"Bob"<<endl;

    else cout<<"Draw"<<endl;







return 0;

}


// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <string>

#include <cmath>

#include <algorithm>

#include <vector>

#include <map>

#include <queue>

#include <set>

using namespace std;

typedef long long LL;

const int MaxN = 1e5;

const int Inf = 1 << 30;



int a[MaxN + 5];



int main()

{

	int A,B;

	while(~scanf("%d%d",&A,&B)){

		A = A == 1 ? 14 : A;

		B = B == 1 ? 14 : B;

		if(A > B) printf("Alice\n");

		else if(A < B) printf("Bob\n");

		else printf("Draw\n");

	}

    return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>



using namespace std;

int main()

{

    int a,b;

    cin>>a>>b;

    if(a==1 && b!=1)

        cout<<"Alice"<<endl;

    else if(b==1 && a!=1)

        cout<<"Bob"<<endl;

    else if(a>b)

        cout<<"Alice"<<endl;

    else if(b>a)

        cout<<"Bob"<<endl;

    else

        cout<<"Draw"<<endl;

    return 0;

}




// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <string>

#include <cmath>

#include <algorithm>

#include <vector>

#include <map>

#include <queue>

#include <set>

using namespace std;

typedef long long LL;

const int MaxN = 1e5;

const int Inf = 1 << 30;



int a[MaxN + 5];



int main()

{

	int A,B;

	while(~scanf("%d%d",&A,&B)){

		A = A == 1 ? 14 : A;

		B = B == 1 ? 14 : B;

		if(A > B) printf("Alice\n");

		else if(A < B) printf("Bob\n");

		else printf("Draw\n");

	}

    return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

using namespace std;



int main()

{

    int a,b;

    cin>>a>>b;

    if(a==1 && b==1)

    {

        cout<<"Draw"<<endl;

        return 0;

    }

    if(a==1)

        cout<<"Alice"<<endl;

    else if(b==1)

        cout<<"Bob"<<endl;

    else if(a > b)

        cout<<"Alice"<<endl;

    else if(a < b)

        cout<<"Bob"<<endl;

    else

        cout<<"Draw"<<endl;

    return 0;

}




// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <string>

#include <cmath>

#include <algorithm>

#include <vector>

#include <map>

#include <queue>

#include <set>

using namespace std;

typedef long long LL;

const int MaxN = 1e5;

const int Inf = 1 << 30;



int a[MaxN + 5];



int main()

{

	int A,B;

	while(~scanf("%d%d",&A,&B)){

		A = A == 1 ? 14 : A;

		B = B == 1 ? 14 : B;

		if(A > B) printf("Alice\n");

		else if(A < B) printf("Bob\n");

		else printf("Draw\n");

	}

    return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

#define ll long long int

int main() {

    int a,c,b;

    // string s,ss;

    cin>>a>>b;

    if(a==b)

        cout<<"Draw"<<endl;

    else if(a==1)

        cout<<"Alice"<<endl;

    else if(b==1)

        cout<<"Bob"<<endl;



    else if(a>b)

        cout<<"Alice"<<endl;

    else

        cout<<"Bob"<<endl;

}














// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <string>

#include <cmath>

#include <algorithm>

#include <vector>

#include <map>

#include <queue>

#include <set>

using namespace std;

typedef long long LL;

const int MaxN = 1e5;

const int Inf = 1 << 30;



int a[MaxN + 5];



int main()

{

	int A,B;

	while(~scanf("%d%d",&A,&B)){

		A = A == 1 ? 14 : A;

		B = B == 1 ? 14 : B;

		if(A > B) printf("Alice\n");

		else if(A < B) printf("Bob\n");

		else printf("Draw\n");

	}

    return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <iostream>

#include <cstdio>

#include <cstring>

#include <algorithm>

#include <cmath>

#include <queue>

#include <stack>

#include <map>

#include <set>

#include <vector>

#include <iomanip>

#define ALL(x) (x).begin(), (x).end()

#define dll(x) scanf("%I64d",&x)

#define xll(x) printf("%I64d\n",x)

#define sz(a) int(a.size())

#define all(a) a.begin(), a.end()

#define rep(i,x,n) for(int i=x;i<n;i++)

#define repd(i,x,n) for(int i=x;i<=n;i++)

#define pii pair<int,int>

#define pll pair<long long ,long long>

#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)

#define MS0(X) memset((X), 0, sizeof((X)))

#define MSC0(X) memset((X), '\0', sizeof((X)))

#define pb push_back

#define mp make_pair

#define fi first

#define se second

#define eps 1e-6

#define gg(x) getInt(&x)

#define db(x) cout<<"== [ "<<x<<" ] =="<<endl;

using namespace std;

typedef long long ll;

ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}

ll lcm(ll a,ll b){return a/gcd(a,b)*b;}

ll powmod(ll a,ll b,ll MOD){ll ans=1ll;while(b){if(b&1)ans=ans*a%MOD;a=a*a%MOD;b>>=1;}return ans;}

inline void getInt(int* p);

const int maxn=1000010;

const int inf=0x3f3f3f3f;

/*** TEMPLATE CODE * * STARTS HERE ***/



int main()

{

	//    freopen("C:\\Users\\DH_M\\Desktop\\code_io\\in.txt.txt","r",stdin);

	//    freopen("C:\\Users\\DH_M\\Desktop\\code_io\\out.txt.txt","w",stdout);

	int a,b;

	cin>>a>>b;

	if(a==b)

	{

		cout<<"Draw"<<endl;

	}else

	{

		if(a==1)

		{

			cout<<"Alice"<<endl;

		}else if(b==1)

		{

			cout<<"Bob"<<endl;

		}else

		{

			if(a<b)

			{

				cout<<"Bob"<<endl;

			}else

			{

				cout<<"Alice"<<endl;

			}

		}

	}

	

	

    return 0;

}



inline void getInt(int* p) {char ch;do {ch = getchar();} 

while (ch == ' ' || ch == '\n');if (ch == '-') {*p = -(getchar() - '0');

while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 - ch + '0';}}

else {*p = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9') 

{*p = *p * 10 + ch - '0';}}}

// Optimized solution to the same problem (faster):
#include <cstdio>

using namespace std;

int main ()

{

    int a,b;

    scanf("%d %d",&a,&b);

    if(a==b)

        printf("Draw\n");



    else if(a<b)

    {

        if(a==1)

        {

            printf("Alice\n");

        }

        else

            printf("Bob\n");

    }

    else if(a>b)

    {

        if(b==1)

            printf("Bob\n");

        else

            printf("Alice\n");

    }



    return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

using namespace std;

int main()

{

	int a,b;

	cin>>a>>b;

	if (a==b)

	{

		cout<<"Draw";

	}

	else if (a==1)

	{

		cout<<"Alice";

	}

	else if (b==1)

	{

		cout<<"Bob";

	}

	else if (a>b)

	{

		cout<<"Alice";

	}

	else

	{

		cout<<"Bob";

	}

	cout<<"\n";

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

using namespace std;

int main ()

{

    int a,b;

    scanf("%d %d",&a,&b);

    if(a==b)

        printf("Draw\n");



    else if(a<b)

    {

        if(a==1)

        {

            printf("Alice\n");

        }

        else

            printf("Bob\n");

    }

    else if(a>b)

    {

        if(b==1)

            printf("Bob\n");

        else

            printf("Alice\n");

    }



    return 0;

}

// Fastest known solution for this problem: