Ryan Strome (2 years, $5M)
Patrik Laine @ $3.7M retention (1 year, $8.7M -> $5M)
Conditional pick (based on Laine's goals or games played next year, I haven't really given thought on the details)
Reasoning for Montreal: It's no secret that the Habs are in desperate need for a 2C to become a competitive playoff team. Strome at 31yo is obviously not a long term solution but could be a useful stopgap at the position. His numbers are quite decent on an offensively inept Ducks team (no offense Ducks fans) and he has the required playmaking skill for a top 6 role. The two more years at $5M AAV line up well with the Habs farm making their development to eventually take Strome's spot.
Reasoning for Anaheim: With their young top forwards (Carlsson, McTavish, Gauthier) stepping up this past year Strome could be expendable. The reasoning to acquire Laine in return is quite simple: the Ducks had the worst PP in the league this year, Laine is there to fix that. His contract is also expiring next year so there's not a lot of commitment that needs to made there.
Now obviously there is a risk on Laine as he's been rarely healthy these past few years and his play in Montreal suggested that he might still be suffering from various injuries, which is why I added a conditional pick to be sent to Anaheim as insurance if Laine doesn't work out for them. As you probably figured out, the salary retention is to offset the AAVs so there should be no concern regarding the cap hit for either team.