public List<Team> simulateGroupStage(int nWinners, boolean verbose, int nTimeSteps) {
		
		if(teams.size() < 2) return null;
		
		//Get all 2 element combinations of all teams in group,
		//simulate match.
		for(int i = 0; i < teams.size()-1; i++)
			for(int j = i+1; j < teams.size(); j++) {
				
				Team A = teams.get(i);
				Team B = teams.get(j);
				
				Team winner = MatchSimulator.match(A, B, nTimeSteps, false, verbose);
				
				System.out.print("Match: " + A.getName() + " x " + B.getName());
				
				if(winner != null) {
					Team loser = (winner.equals(A)) ? B : A;
					winner.incWins();
					loser.incLosses();
					
					System.out.println(" >> Winner: " + winner.getName());
					
					continue;
				}
				
				A.incDraws();
				B.incDraws();
				
				System.out.println(" >> Draw");
			}
		
		//Get n best teams
		PriorityQueue<Team> pq = new PriorityQueue<>(teams.size(), new TeamComparator());
		List<Team> winners = new ArrayList<>();
		
		Iterator<Team> it = teams.iterator();
		while(it.hasNext())
			pq.add(it.next());
		
		for(int i = 0; i < nWinners; i++)
			winners.add(pq.poll());
			
		return winners;
	}