Problem:
Score : 100 points

Problem Statement

Alice and Bob are playing One Card Poker.

One Card Poker is a two-player game using playing cards.

Each card in this game shows an integer between 1 and 13, inclusive.

The strength of a card is determined by the number written on it, as follows:

Weak 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < 11 < 12 < 13 < 1 Strong

One Card Poker is played as follows:

Each player picks one card from the deck. The chosen card becomes the player's hand.

The players reveal their hands to each other. The player with the stronger card wins the game.

If their cards are equally strong, the game is drawn.

You are watching Alice and Bob playing the game, and can see their hands.

The number written on Alice's card is A, and the number written on Bob's card is B.

Write a program to determine the outcome of the game.

Constraints

1≦A≦13

1≦B≦13

A and B are integers.

Input

The input is given from Standard Input in the following format:

A B

Output

Print Alice if Alice will win. Print Bob if Bob will win. Print Draw if the game will be drawn.

Sample Input 1

8 6

Sample Output 1

Alice

8 is written on Alice's card, and 6 is written on Bob's card.
Alice has the stronger card, and thus the output should be Alice.

Sample Input 2

1 1

Sample Output 2

Draw

Since their cards have the same number, the game will be drawn.

Sample Input 3

13 1

Sample Output 3

Bob

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Runtime Error)

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Main {
	static String[] Lb;
	private static Scanner in;
	public static void main(String[] args) {
		in = new Scanner(System.in);
    int N = in.nextInt(); // the number of cells on the Y axis
    int X = in.nextInt(); // the number of cells on the Y axis
    List<String>  lineA= new ArrayList<>();
    List<String>  lineB= new ArrayList<>();
    in.nextLine();
    int count = 0;
    while(count< N){
        lineA.add(in.nextLine());
    count++;
    }
    count =0;
    while(count< X){
        lineB.add(in.nextLine());
    count++;
    }
      System.out.println(recalTo(lineA,lineB));
}
	static int cal (int N,int X){
		int L = 0;
		L = N + X;
		L += (N-X)/X * 2 -X * 2;
		return L;
	}
	//文字列比較 何文字目から一致しているかを返す
	public static int recal(String A , String B ,int i ,boolean trig){
		if(B.length() + i > A.length()){
			return -1;
		}
		if(A.substring(i, i + B.length()).equals(B)){
			return i;
		}else{
			if(trig){
				return recal(A,B,++i, trig);
			}else{
				return -1;
			}
		}
	}
	
	public static boolean matchList(List<String> LA , List<String> LB ,int indexA){
		boolean trig = false;
		int indexB = 0;
		int length = 0;
		int length1 = 0;
		for(String A : LA){
			A = A.substring(indexA);
			String B = LB.get(indexB);
			if((length = recal(A,B,length, trig)) != -1){
				if(!trig){
					length1 = length;
				}
				trig = true;
				indexB++;
				if(length1 != length){
					trig = false;
					indexB = 0;
					length = 0;
				}
			}else{
				trig = false;
				indexB = 0;
				indexA = 0;
				length = 0;
			}
			if(trig && indexB == LB.get(0).length()){
				return true;
			}
		}
		return false;
	}
	public static String recalTo(List<String> LA , List<String> LB){
		//Aの続きから検索を再開したい。
		List<String> AA = LA;
		int index = 0;
		while(true){
			if(AA.isEmpty()){
				break;
			}
			if(matchList(LA, LB, index)){
				return "Yes";
			}
			index++;
			if(LA.get(0).length() <= index){
				LA.remove(0);
				index = 0;
			}
		}
		return "No";
	}
}