Create a simulation of a card game. The game involves a deck of unique cards represented by integers. Assume there are only 2 players "A" and "B", but the game should be extensible to N players. The deck is shuffled and cards are dealt out in round-robin fashion: card at index i goes to player i % N. Once all cards are dealt, the game proceeds in rounds. In each round every player plays the next card in their hand. The player who played the highest card wins the round and earns a point. If two or more players tie for the highest card, no one earns a point. After all cards have been played, return the scores of all players sorted by score descending (and by player id ascending for ties). Implement the function simulateCardGame(cards: List[int], N: int) -> List[Tuple[int, int]] where the returned list contains tuples of (player_id, score).