Britain's Simon Yates retained his lead at the Giro d'Italia after a wet sprint finish on stage 17 in Iseo.
Italy's Elia Viviani took his fourth stage victory of the 2018 tour from Ireland's Sam Bennett in a chaotic final push as the rain lashed down.
Yates had begun the day with a 56-second lead over reigning champion Tom Dumoulin after Tuesday's time trial.
And the 25-year-old finished the 155km course from Riva da Garda safely in the main pack to maintain his title bid.
Yates is bidding to become the first British man to win the Giro - Nicole Cooke won the women's equivalent in 2004 - with three mountain stages that should suit him better than Dumoulin to come on Thursday, Friday and Saturday before the race finishes in Rome on Sunday.
He finished in 28th place but on the same time as Dumoulin of the Netherlands and four-time Tour de France winner Chris Froome.
Team Sky's Froome is in fourth place, behind Italian Domenico Pozzovivo of Bahrain-Merida, who is three minutes and 11 seconds down on Yates.
There were two casualties before the race began on Wednesday as South Africa's Louis Meintjes pulled out with a respiratory infection and Belgian Victor Campenaerts also withdrew.
And on a turbulent stage from Riva del Garda with constant attacks, Yates managed to keep out of trouble as Viviani recovered from a mechanical problem to prove his class in the final sprint.
The win for Viviani effectively wraps up the points classification - he leads Bennett by 58 points with Sunday's finale into Rome the only likely place where either will pick up more points, with 50 on offer for the winner of the stage.
Stage 16 results:
1. Elia Viviani (Ita/Quick-Step Floors) 3hr 19mins 57secs
2. Sam Bennett (Ire/Katusha-Alpecin) same time
3. Niccolo Bonifazio (Ita/Bahrain-Merida) same time
4. Danny van Poppel (Ned/LottoNL-Jumbo) same time
5. Jens Debusschere (Ger/Lotto Soudal) same time
6. Kristian Sbaragli (Ita/Israel Cycling Academy) same time
7. Jean-Pierre Drucker (Lux/BMC Racing) same time
8. Sacha Modolo (Ita/EF Education First-Drapac p/b Cannondale) same time
9. Andrea Vendrame (Ita/Androni-Sidermec-Bottecchia) same time
10. Jose Goncalves (Por/Katusha Alpecin) same time
1. Simon Yates (GB/Mitchelton-Scott) 69hrs 59mins 11secs
2. Tom Dumoulin (Ned/Team Sunweb) +56secs
3. Domenico Pozzovivo (Ita/Bahrain-Merida) +3mins 11secs
4. Chris Froome (GB/Team Sky) +3mins 50secs
5. Thibaut Pinot (Fra/Groupama-FDJ) +4mins 19secs
6. Rohan Dennis (Aus/BMC Racing Team) +5mins 04secs
7. Miguel Angel Lopez (Col/Astana Pro Team) +5mins 37secs
8. Pello Bilbao (Spa/Astana Pro Team) +6mins 02secs
9. Richard Carapaz (Ecu/Movistar Team) +6mins 07secs
10. George Bennett (NZ/LottoNL-Jumbo) +7mins 01secs