In what had to rank as the worst presidential debate in modern history, CNBC anchors berated, cut off, and skewed the words of Republican candidates over the course of two hours on Wednesday night. In spite of – and in the case of Marco Rubio, Ted Cruz, and Chris Christie, among others, because of – that horrifically biased moderation, Republicans emerged looking better for wear. They needed to show they had elbows, and many of them did.

Without further ado, here are the debate grades.

Donald Trump: B. In the run-up to the debate, I wrote that Trump needed to stay away from attacking other candidates. Except when attacked, he did so. His initial exchange with aggressively nasty John Kasich ended with Kasich face down in the dust after Trump questioned his relationship with Lehman Brothers. And his slaps at the media were comic gold – his final riposte against the CNBC powers-that-be, in which he bragged about forcing them to reduce the length of the debate to two hours, was a classic. Trump only gets a B rather than an A because he was caught red-handed in a lie about his position on H1B visas. It became clear that Trump has not even read his immigration plan – or that if he did, he didn’t know it well enough for a debate.

Ben Carson: C. Carson came in with momentum, and he exits without it. He didn’t have much to say throughout the debate, and he flubbed his answers on his tax plan. He looked uncertain and erratic. He still gets off the occasional strong note – when talking about social issues, he may be the best in the field – but even he acknowledged that his weakness may be his inability to consider himself a presidential candidate.

Marco Rubio: A. Rubio had a terrific night. Smooth on defense, willing to jab at the media, Rubio turned in a stellar performance. Labeling the media the Democratic Party’s Super PAC was a terrific moment, a moment underscored by Hillary’s lackeys attacking him throughout the debate with discredited talking point after discredited talking point. John Harwood, the worst offender, even lied about Rubio’s tax plan statistics, forcing Rubio to give him a lecture on elementary mathematics. Rubio also beat up Jeb Bush after Bush turned on him regarding his voting record in the Senate, bashing Bush for hypocrisy: he pointed out, correctly, that Bush had not criticized John McCain for missing votes in 2008, and chided him for political aggressiveness in the face of impending electoral doom.

Ted Cruz: A. Cruz had the best moment of the night, and of the entire debate season. Cruz said that the questions asked “illustrate why the American people don’t trust the media.” He added, “This is not a cage match.” He then called the Democratic debate a debate between Bolsheviks and Menshiviks, and contrasted the media treatment of Republicans with media treatment of Democrats, “where every fawning question from the media was which of you is more handsome and wise.” Cruz also pointed out that none of the members of the media vote in Republican primaries. Cruz needed to get aggressive after two passive debates, and he did so in a massive way, with a moment that rated 98% with Frank Luntz’s focus group, for whatever that’s worth. Cruz is for real, and he and Rubio are the shadow frontrunners.

Jeb Bush: F. Bush was plain awful. He couldn’t dent Rubio. He couldn’t dent Trump. He appeared alternatively bewildered and angry. He sided with the members of the media rather than doing the right thing and tearing them apart, like the other more intelligent candidates. He’s toast. Rubio had the unkindest cut of all: his campaign manager said he wouldn’t critique Bush’s performance because it spoke for itself. Ouch.

Carly Fiorina: B. Fiorina was polished, composed, and often witty. But she couldn’t top her second debate performance. There was no place to go but down.

Rand Paul: D. Paul said nothing of interest the entire debate, but vowed to filibuster the new budget deal. That didn’t even land with the heavily conservative audience. It will do little for him in polling.

Mike Huckabee: C. Huckabee’s always fine in debate, and he landed a couple of solid lines against the media as well. But his star has waned, and his economic populism with regard to income inequality made him seem oddly dissonant in the more free market crowd.

Chris Christie: B. Christie has a feel for the room. He understands the mood. He bashed the media – telling John Harwood that he was rude, even by New Jersey standards, was terrific. He also scored solidly on entitlement reform, and appeared magnanimous with his colleagues. A good night for the New Jersey governor.

John Kasich: F. Shouty McScreamypants came out in full force, with Kasich leading off the debate by calling his colleagues insane, and concluding by saying Americans should come together. It was that kind of night for the incoherent big government governor of Ohio. Truthfully, Trump put his candidacy six feet under in the first five minutes of the debate.

CNBC: Z. There are no letter grades that properly fit how terrible the network was. The network was so awful that even Reince Priebus had to condemn them.

The field is consolidating. The top three, in the end, will be Trump, Cruz, and Rubio. Christie is the new dark horse. Jeb is done. The race is on.