As news of the Moscow concert hall attack broke on Friday, Ukrainians knew what was coming: Kyiv would be blamed.
The next thing they expected was more drones and more missiles.
The accusations began almost immediately.
They were just hints at first, until President Vladimir Putin openly claimed that the men who attacked Moscow had tried to flee to Ukraine, helped by contacts there.
Then shortly before dawn on Sunday came the sound of explosions in Kyiv.
When Mr Putin made his comments on Saturday in an address to the Russian nation, Islamic State group (IS) extremists had already announced they had carried out the killings.
The US had confirmed that it passed on intelligence of a threat earlier this month.
Now IS have released a hideously graphic video of their massacre, filmed on bodycams and including shouts of “God is Greatest” from the attackers.
In his evening statement on Saturday, Ukrainian President Volodymyr Zelensky was visibly angry that his country was being blamed.
He described the Russian president and others in Moscow as “scum” for linking the attack there to Kyiv.
He suggested a “miserable” Russian leader was more concerned about pinning the attack on Kyiv than reassuring his own citizens.
Mr Zelensky then turned the tables on Moscow, saying it had sent “hundreds of thousands of [its own] terrorists” to Ukraine since the full-scale invasion began in February 2022.
He said those troops were now brutalising Ukraine, instead of protecting Russia against the real threat of extremism.
They burn our cities… they torture and rape.”
Ukrainian police have opened thousands of criminal cases against Russian soldiers since February 2022, including one killing we investigated where two unarmed civilians were shot in the back.
Earlier on Saturday, the military intelligence directorate in Kyiv called the specific Russian claim that the gunmen were caught trying to flee across the Ukrainian border “absurd”.
It is an active front line teeming with Russian soldiers and security services.
The idea anyone would head there after staging a major attack on Moscow, Andriy Yusov argued, would be either “suicidal” or “stupid”.
According to Russian officials, the suspects were captured in the Bryansk region on their way west to Ukraine. If that is genuinely where their car was stopped – and we do not know that – they could have been heading for Belarus.
It is a far easier route out of Russia than crossing a minefield to get to Ukraine.
Videos now circulating on social media show the detention of the suspected attackers and part of their interrogation. One shows a Russian agent trying to force a man to eat a piece of his own ear which has been severed. He spits it out.
In another video his head is bandaged and face covered in blood. Any confessions that emerge after such torture could not be treated as reliable.
The video clips were presumably released to showcase a tough response, but that follows an attack which the same security services failed to stop or see coming.
So in his address, Mr Zelensky suggested Russians ask questions of their own intelligence agencies, rather than blaming Ukraine.
That would include asking whether information from the US was ignored.
But Putin’s Russia has been purged of political opposition and independent media, leaving no-one to really hold the authorities to account.
In his address, Ukraine’s president also alluded to a dark theory raised earlier by his military intelligence agency – that the Russian authorities themselves were linked to the Moscow attack.
The supposed motive was to bolster Mr Putin’s hold on power, rally support for his war and further mobilisation.
The comments hark back to long-standing suspicions in Russia over the bombing of apartment blocks in 1999 that was the trigger for Vladimir Putin – who was prime minister at the time – to launch a war on the Chechen Republic.
But Russia and Ukraine are engaged in an information war as well as fighting on the battlefield. The IS video and claim it carried out the attack would cut across Kyiv’s allegations just like it did the accusations from Moscow.
Sunday morning’s missile launches targeting Ukraine feel like Russia’s war as usual, rather than any escalation in response to the Crocus City Hall attack – yet.
Before dawn on Sunday there were also reports of Ukrainian strikes on Crimea – the peninsula Russia annexed illegally from Ukraine in 2014.
It takes time to prepare a large-scale missile strike, and this is the second by Russia since early on Friday.
The major city of Kharkiv is still largely without power after the attack that day targeted energy infrastructure all over the country.
Ukraine is certainly braced for worse after all the rhetoric from Moscow.
But the Crocus City Hall attack suggests Russia is facing a real and significant danger within its borders – not the fake threat it concocted from Ukraine to justify Vladimir Putin’s 2022 invasion
That is a worry for the Russian president – a man who hates to look weak.
Which is why Russia is so keen to deflect blame towards Kyiv even when the evidence points in a very different direction.
That is a worry for the Russian president – a man who hates to look weak.
Which is why Russia is so keen to deflect blame towards Kyiv even when the evidence points in a very different direction.