President Donald Trump said hate has no place in America after a total of 29 people were killed and 50 others were injured in two mass shootings in Texas and Ohio.
Police gunned down the Ohio shooter on the doorstep of a bar where people were hiding in the middle of Dayton’s nightclub district, while officers arrested the gunman in El Paso, Texas, as hundreds of people fled a crowded shopping centre.
Though the two separate attacks staggered a nation accustomed to gun violence, the bigger shock may have been that the death toll was not higher.
In the Texas border city of El Paso, a gunman opened fire on Saturday morning in a shopping area packed with thousands of people during the busy back-to-school season.
The attack killed 20 people and wounded more than two dozen, many of them critically.
Hours later in Dayton, Ohio, a gunman wearing body armour and carrying extra magazines opened fire in a popular nightlife area, killing nine and injuring at least 26 others.
The attacks came less than a week after a 19-year-old gunman killed three people and injured 13 others at the popular Gilroy Garlic Festival in California, before dying of a self-inflicted gunshot wound.
The El Paso shooting is being investigated as a possible hate crime as authorities worked to confirm whether a racist, anti-immigrant screed posted online shortly beforehand was written by the man arrested.
The border city is home to 680,000 people, many of whom are Latino.
El Paso authorities offered few details about the assault, but police chief Greg Allen described the scene as “horrific” and said many of the 26 people who were hurt had life-threatening injuries.
In Dayton, the bloodshed was likely limited by the swift police response.
Officers patrolling the area took just 30 seconds to stop the shooting, which unfolded at around 1am on the streets of the busy Oregon District, mayor Nan Whaley said.
Video released by police shows 24-year-old Connor Betts being shot down by officers, just steps away from entering a bar filled with hiding patrons.
Had police not responded so quickly, “hundreds of people in the Oregon District could be dead today”, Ms Whaley said.
Betts’ 22-year-old sister, Megan Betts, was among those killed in Dayton.
Authorities identified the El Paso suspect as 21-year-old Patrick Crusius from Allen, a Dallas suburb which is a 10-hour drive from the city.
El Paso mayor Dee Margo said he knew the shooter was not from his city.
“It’s not what we’re about,” the mayor said at a news conference with governor Greg Abbott and the police chief.
US president Donald Trump denounced both shootings, saying “hate has no place in our country”.
Addressing reporters in Morristown, New Jersey, the US president said on Sunday that “we’re going to take care” of the problem.
He said he has been speaking to the attorney general, the FBI director and members of congress and will make an additional statement later on Monday.
Mr Trump also pointed to a mental illness problem in the US, calling the shooters “really very seriously mentally ill”.
Democratic presidential candidate and former Texas congressman Beto O’Rourke, who is from El Paso and was attending a candidate event on Saturday in Las Vegas, appeared shaken after receiving news of the shooting in his home town.
He said he heard early reports that the shooter might have had a military-style weapon, and said we need to “keep that s*** on the battlefield. Do not bring it into our communities”.
The shootings were the 21st and 22nd mass killings of 2019 in the US, according to the AP/USA Today/Northeastern University mass murder database which tracks homicides where four or more people are killed – not including the offender.
Including the two latest attacks, 125 people have been killed in mass shootings so far this year.