@GG Thanks for the interesting question. Here are my thoughts:Use a Map<Voter, Integer> to track how many candidates a voter voted. If < 3, accept this vote, otherwise, deny and print out this voter as fraud. Use a Map<Candidate, Integer> to track how many tickets each candidate got. Use a Heap<Map.Entry<Candidate, Integer>> to monitor the top 2 candidates.