Design and implement a deterministic, turn-based monster battle simulator for two ordered teams of monsters. Each monster has a name, hit points (HP), attack power, and a defense modifier. Battles proceed in rounds: at each turn the single front-most living monster of the attacking team targets the front-most living monster of the opposing team, computes damage as max(1, attacker.attack − target.defense), subtracts that damage from the target’s HP, and removes the target from its team if its HP drops to 0 or below. Teams alternate turns, starting with the first team. The fight ends immediately when one team has no monsters left; the other team is declared the winner. Your program should accept two lists that describe the initial line-ups of the teams and return the name of the winning team.