Public transport has largely come to a halt across much of Brazil as protesters blocked roads and scuffled with police in a general strike to protest against proposed changes to labour laws and the pension system.
President Michel Temer's administration says more flexible labour rules will revive a moribund economy and warns the pension system will go bankrupt without changes.
Unions and other groups called for the strike, saying the changes before congress will make workers too vulnerable and strip away too many benefits.
In Sao Paulo, the country's largest city, only one metro line of six was working during the height of the morning rush hour, and all buses stayed off the roads. Two other metro lines began offering partial services later.
In Rio de Janeiro, buses ran reduced services.
Protesters in both cities set up roadblocks. Police used tear gas to break up protesters blocking roads to Congonhas, the smaller of Sao Paulo's two airports. A group of homeless people and activists blocked a road to the larger Guarulhos Airport. Both were still open for flights.
"There was a blockade for about an hour, but it was removed," said Barbara Castro, a sociology professor who was flying to Lima, Peru, out of Guarulhos.
"They didn't stop the airport, but I hope that they stop the rest of the country," she said.
Protesters at Santos Dumont Airport in Rio created confusion by running through the terminal and pushing down the line dividers at check-in counters. Also in Rio, protesters scuffled with police as they blocked a major road.
Brazil's economy is in a deep recession, and many Brazilians are frustrated with Mr Temer's government. He has argued that the proposed changes will benefit Brazilians in the long run, but with so many out of work, many feel they can ill afford any cuts to benefits.
Underscoring the economic malaise, the IBGE statistics agency announced on Friday that unemployment had jumped to 13.7% in the first quarter of the year, up from 12%.
"Here in Brazil (the politicians) are robbing the workers' rights with these pension and labour reforms," said union leader Reginal de Souza. "We are here to say this is enough and that we are against all this nonsense that the government ... is doing to the workers and to all the Brazilian people."
AP