| n | def handle_input(): | n | def process_input(): | 
            |  | player_data = {} |  | players = {} | 
            |  | deck_data = {} |  | decks = {} | 
            |  | while True: |  | while True: | 
            | n | line = input() | n | inp = input() | 
            |  | if not line: |  | if not inp: | 
            |  | break |  | break | 
            | n | process_line(line, player_data, deck_data) | n | parse_input(inp, players, decks) | 
            |  | return (player_data, deck_data) |  | return (players, decks) | 
            |  |  |  |  | 
            | n | def process_line(line, player_data, deck_data): | n | def parse_input(line, players, decks): | 
            |  | first, second = line.split(' / ') |  | part1, part2 = line.split(' / ') | 
            |  | if first.isdigit(): |  | if part1.isdigit(): | 
            |  | store_card_in_deck(first, second, deck_data) |  | add_card_to_deck(part1, part2, decks) | 
            |  | else: |  | else: | 
            | n | assign_deck_to_player(first, second, player_data) | n | add_deck_to_player(part1, part2, players) | 
            |  |  |  |  | 
            | n | def store_card_in_deck(deck_id, card_name, deck_data): | n | def add_card_to_deck(deck_num, card_name, decks): | 
            |  | if deck_id not in deck_data: |  | if deck_num not in decks: | 
            |  | deck_data[deck_id] = set() |  | decks[deck_num] = set() | 
            |  | deck_data[deck_id].add(card_name) |  | decks[deck_num].add(card_name) | 
            |  |  |  |  | 
            | n | def assign_deck_to_player(player_name, deck_id, player_data): | n | def add_deck_to_player(player_name, deck_num, players): | 
            |  | if player_name not in player_data: |  | if player_name not in players: | 
            |  | player_data[player_name] = set() |  | players[player_name] = set() | 
            |  | player_data[player_name].add(deck_id) |  | players[player_name].add(deck_num) | 
            |  |  |  |  | 
            | n | def identify_largest_pack(player_data, deck_data): | n | def find_largest_pack(players, decks): | 
            |  | largest_pack = 0 |  | max_size = 0 | 
            |  | top_players = [] |  | result = [] | 
            |  | for player, decks in player_data.items(): |  | for player, player_decks in players.items(): | 
            |  | unique_cards = collect_unique_cards(decks, deck_data) |  | unique_cards = gather_unique_cards(player_decks, decks) | 
            |  | current_pack_size = len(unique_cards) |  | pack_size = len(unique_cards) | 
            |  | if current_pack_size > largest_pack: |  | if pack_size > max_size: | 
            |  | largest_pack = current_pack_size |  | max_size = pack_size | 
            |  | top_players = [player] |  | result = [player] | 
            |  | elif current_pack_size == largest_pack: |  | elif pack_size == max_size: | 
            |  | top_players.append(player) |  | result.append(player) | 
            |  | return sorted(top_players) |  | return sorted(result) | 
            |  |  |  |  | 
            | n | def collect_unique_cards(player_decks, deck_data): | n | def gather_unique_cards(player_decks, decks): | 
            |  | all_cards = set() |  | unique_cards = set() | 
            |  | for deck in player_decks: |  | for deck in player_decks: | 
            | n | if deck in deck_data: | n | if deck in decks: | 
            |  | all_cards.update(deck_data[deck]) |  | unique_cards.update(decks[deck]) | 
            |  | return all_cards |  | return unique_cards | 
            |  |  |  |  | 
            | t | def run_program(): | t | def main(): | 
            |  | player_data, deck_data = handle_input() |  | players, decks = process_input() | 
            |  | top_players = identify_largest_pack(player_data, deck_data) |  | result = find_largest_pack(players, decks) | 
            |  | for player in top_players: |  | for name in result: | 
            |  | print(player) |  | print(name) | 
            |  | run_program() |  | main() |