The Brazilian Grand Prix will be held in Rio de Janeiro next year, the country's president has said.
Sao Paulo's Interlagos track has hosted the race since 1990 but President Jair Bolsonaro said that a new circuit would be built in Rio to take over from 2020.
"The construction will take six to seven months," Bolsonaro said during a military ceremony in Rio.
Bolsonaro said keeping F1 in Sao Paulo, which has a contract that includes next year's race, was "no longer viable".
He added: "There was state assistance [from the local government] in Sao Paulo, with a huge debt."
He said the new track would be built without public money.
Bolsonaro signed a memorandum of understanding for the construction of a new track at the Deodoro military base in the west of Rio de Janeiro.
The area was used as a venue for some events in the 2016 Olympics, including equestrian, field hockey and modern pentathlon.
However, organisers in Sao Paulo have disputed the president's claim. "There is a current contract for the realisation of the F1 Brazil GP in Sao Paulo until 2020. And both parties (F1 and City Hall) continue to honour their commitments," they said in a statement.
F1 is known to have been exploring options to secure a long-term future for the sport in Brazil, which is one of its most important markets.
Brazil is the only South American country to host a grand prix and it has F1's largest single national television audience.
Rio hosted F1 at the now-defunct Jacarepagua circuit in 1978 and from 1981 to 1989.