A man accused of steering his car on to one of the busiest pavements in the US and mowing down pedestrians has been charged with murder and attempted murder.
New York Police Department said 26-year-old Richard Rojas, of the Bronx, was charged with second-degree murder, 20 counts of attempted murder and aggravated vehicular homicide.
Police said he drove his car for three blocks in Times Square, hitting nearly two dozen people, before steel security barriers finally stopped him.
An 18-year-old tourist from Michigan was killed and her 13-year-old sister was among the 22 injured, four of them critically.
Officials said Rojas served in the US Navy but was discharged after disciplinary problems.
After his arrest, Rojas told officers he was "hearing voices" and expected to die, police officials said.
After the wreck he emerged from his vehicle running, shouting and jumping before being subdued by police and bystanders in a chaotic scene.
"He began screaming, no particular words but just utter screaming. He was swinging his arms at the same time," said Ken Bradix, a security supervisor at a nearby Planet Hollywood restaurant who tackled him.
Rojas initially tested negative for alcohol, but more detailed drug tests are pending, according to officials.
The carnage happened in a part of the city that has long been considered a possible terrorist target because of its large crowds, a concern that became elevated after the September 11 attacks and compounded by recent attacks in England, France and Germany in which vehicles ploughed through crowds of pedestrians.
Rojas's motivation was unclear, but mayor Bill de Blasio said there was "no indication that this was an act of terrorism".
A picture has emerged of Rojas from neighbours and authorities as a man with problems.
A week ago he was arrested and charged with pointing a knife at a notary, who he accused of stealing his identity. He pleaded guilty to a harassment violation. In previous arrests, he told authorities he believed he was being harassed and followed, one of the police officials said.
Rojas was arrested on charges of driving while intoxicated in 2008 and 2015, Police Commissioner James O'Neill said, losing his licence for 90 days.
A neighbourhood friend in the Bronx, Harrison Ramos, said Rojas was not the same when he came back from the Navy in 2014.
"He's been going through a real tough time," he said.
Rojas enlisted in 2011 and was an electrician's mate fireman apprentice. In 2012 he served aboard the USS Carney, a destroyer.
Navy records show that in 2013 he spent two months at a naval brig in Charleston, South Carolina, but not indicate why.
Rojas spent his final months in the Navy at the Naval Air Station in Jacksonville, Florida, before being discharged in 2014 as the result of a special court martial, a Navy official said.
Thursday's mayhem began at noon on a hot, clear day that brought large crowds of people into the streets to enjoy the good weather.
Police identified the woman killed by the car as Alyssa Elsman, of Portage, Michigan.
She graduated last year from Portage Central High School.
"If you didn't know her, you might think she's reserved or shy," school principal Eric Alburtus said. "But if you could talk to her for a minute, you'd realise she was engaging. She was bright. She was funny."