With the Bundesliga, Ligue 1, Premier League and LaLiga all coming to an end this weekend, we are slowly approaching the end of what has been an intriguing 2016-17 campaign.
Chelsea bounced back from last season's 10th-place finish to regain their crown, Real Madrid dethroned Barcelona for their first title since 2012, Monaco ended Paris Saint-Germain's hegemony in France, while Bayern Munich and Juventus continued their domestic dominance.
Although there is still one game to go in Serie A and there are a number of domestic cup finals on the cards in the weeks to come - with the Europa League and Champions League finals on the horizon as well - most teams are already done for the season and have started preparations for 2017-18.
Below, we take a look at which teams have reason to celebrate and which sides end the season in tears.
Champions: Real Madrid
Champions League: Barcelona, Atletico Madrid, Sevilla
Europa League: Villarreal, Real Sociedad
Relegated: Granada, Osasuna, Sporting Gijon
Champions: Bayern Munich
Champions League: RB Leipzig, Borussia Dortmund, Hoffenheim
Europa League: Cologne, Hertha Berlin
Relegated: Darmstadt, Ingolstadt
Promoted: Stuttgart, Hannover
Relegation/promotion playoff: Wolfsburg, Eintracht Braunschweig
Champions League: Tottenham, Manchester City, Liverpool
Europa League: Arsenal, Manchester United*, Everton
Relegated: Sunderland, Middlesbrough, Hull City
Promoted: Newcastle United, Brighton and Hove Albion
*Manchester United will qualify for the Champions League instead if they beat Ajax in the Europa League final.
Champions League: Roma, Napoli
Europa League: Lazio, Atalanta, AC Milan
Relegated: Pescara, Palermo
Promoted: SPAL, Verona
Champions League: Paris Saint-Germain, Nice
Europa League: Lyon, Marseille
Relegated: Bastia, Nancy
Promoted: Strasbourg, Amiens
Relegation/promotion playoff: Lorient, Troyes
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.