import java.util.Collections;
import java.util.Random;
import java.util.Stack;

public class Deck {

	private Stack<Card> stack = new Stack<Card>();
	private Random random = new Random();
	
	public Deck() {
		for (int rank = 0; rank < 13; rank++) { // for each rank
			for (int suit = 0; suit < 4; suit++) { // and for each suit
				stack.push(new Card(rank, suit)); // add a new card to the deck
			}
		}
	}
	
	public void shuffle() {
//		Collections.shuffle(stack);
		int n = stack.size();
		for (int i = n - 1; i >= 1; i--) {
			int j = random.nextInt(i + 1);
			// swap cards at indices i and j
			Card tmp = stack.get(j);
			stack.set(j, stack.get(i));
			stack.set(i, tmp);
		}
	}
	
	public Card draw() {
		return stack.pop();
	}
	
	public static void main(String[] args) {
		Deck deck = new Deck();
		deck.shuffle();
		for (int i = 0; i < 25; i++) {
			System.out.println(deck.draw());
		}
	}

}
