#include <iostream>
#include <queue>
#include <stack>
#include <set>
#include <list>
#include <map>
#include <deque>
#include <cmath>
#include <vector>
#include <utility>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <functional>
#include <sstream>

// short keywords

#define ipow(a,b) (int)pow(a,b)
#define pb push_back
#define mp make_pair
#define mod 1000000007

// for loops

#define rep(i,n) for(int i=0;i<n;i++)
#define reps(i,a,b) for(int i=a;i<=b;i++)
#define rev(i,a,b) for(int i=a;i>=b;i--)

using namespace std;

// short keywords2
typedef long long ll;
typedef long double ld;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;

class Task
{
public:
    const int mod2=1000000;
    void solve(istream& in,ostream& out)
    {
     int a,b;
     in>>a>>b;
     if(a==1)
     {
         a=14;
     }

     if(b==1)
     {
         b=14;
     }

     if(a>b)
     {
         out<<"Alice"<<endl;
     }
     else if (a<b)
     {
         out<<"Bob"<<endl;
     }
     else
     out<<"Draw"<<endl;

    }

    int bs(int a[],int key,int n)
    {
        int x=0,store=-102;
        int low=0;
        int high=n-1;

        while(low!=high)
        {
       //    cout<<"check"<<low<<high<<endl;
            int mid=(low+high)/2;
            cout<<mid<<endl;
            if(a[mid]==key)
            {
                x++;
                return mid;
            }
            else if(a[mid]>key)
            {
                high=mid;
            }
            else if(a[mid]<key)
            {
                low=mid+1;
            }
        }

        if(store>=0)
        {
            return store;
        }
        else
        {
        //    cout<<"sdjqwgd"<<endl;
            if(key<a[0])
            {
                return -1;
            }
            else if(key>a[n-1])
            {
                return -n-1;
            }
            else if(key>a[0] && key<a[1])
            {
                return -2;
            }
            else if(key>a[n-2] && key<a[n-1])
            {
                return -n;
            }
            else
            {
                int l=0,h=n-1,y=0;
                while(y!=1)
                {
                    int m=(h+l)/2;
            //        cout<<m<<endl;
                    if(a[m]<key && a[m+1]>key)
                    {
                        y++;
                        return -m-2;
                    }
                    else if(a[m]>key)
                    {
                        h=m;
                    }
                    else if(a[m+1]<key)
                    {
                        l=m+1;
                    }
                }
            }
        }
    }

    int gcd(int a,int b)
    {
        if(a==0)
        {
           return b;
        }
        else
        {
           return gcd(b%a,a);
        }
    }

    bool isprime(int n)
    {
        if(n==1 || (n%2==0 && n!=2))
        {
            return false;
        }
        else if(n==2 || n==3)
        {
            return true;
        }
        else
        {
            int res=0;
            for(int i=3 ;i<=(int)sqrt(n) ;i+=2)
            {
                if(n%i==0)
                {
                    res++;
                    break;
                }
            }

            if(res==0)
            {
                return true;
            }
            else
            return false;
        }
    }
};


int main()
{
    ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	Task solver;
	std::istream& in(std::cin);
	std::ostream& out(std::cout);
	solver.solve(in,out);
	out.flush();

    return 0;
}





Measured memory_bytes: 256