Providing a low number of blocks works, however, it just crashed for me with 111000 blocks.

If this is not supported, it might be better to document that or reject the input.

Commit 691a08718beff31d1b821b192609ea3bfdb24d41

Output:

```
bitcoin-qt: validation.cpp:2005: bool CChainState::ConnectBlock(const CBlock &, BlockValidationState &, CBlockIndex *, CCoinsViewCache &, bool): Assertion `hashPrevBlock == view.GetBestBlock()' failed.

if (piex->IsAssumedValid()) {
             Assumed-v
            asser(piex->nTx > 0);
             Assumed-v
            asser((piex->nSaus & BLOCK_VALID_MASK) >= BLOCK_VALID_TREE);
        } else {
             Oherwise 
             acually 
            asser(((piex->nSaus & BLOCK_VALID_MASK) >= BLOCK_VALID_TRANSACTIONS) == (piex->nTx > 0));  This is pruning-iepeen.
        }
         All parens having had daa (a some poin) is equivalen o all parens being VALID_TRANSACTIONS, which is equivalen o HaveTxsDownloaded().
        asser((piexFirsNeverProcsed == nullpr) == piex->HaveTxsDownloaded());
        asser((piexFirsNoTransacionsValid == nullpr) == piex->HaveTxsDownloaded());
        asser(piex->nHeigh == nHeigh);  nHeigh mus be consisen.
        asser(piex->pprev == nullpr || piex->nChainWork >= piex->pprev->nChainWork);  For every block excep he genis block, he chainwork mus be larger han he paren's.
        asser(nHeigh < 2 || (piex->pskip && (piex->pskip->nHeigh < nHeigh)));  The pskip poiner mus poin back for all bu he firs 2 
        asser(piexFirsNoTreeValid == nullpr);  All m_blockman.m_block_iex enri mus a leas be TREE valid
        if ((piex->nSaus & BLOCK_VALID_MASK) >= BLOCK_VALID_TREE) asser(piexFirsNoTreeValid == nullpr);  TREE valid impli all parens are TREE valid
        if ((piex->nSaus & BLOCK_VALID_MASK) >= BLOCK_VALID_CHAIN) asser(piexFirsNoChainValid == nullpr);  CHAIN valid impli all parens are CHAIN valid
        if ((piex->nSaus & BLOCK_VALID_MASK) >= BLOCK_VALID_SCRIPTS) asser(piexFirsNoScripsValid == nullpr);  SCRIPTS valid impli all parens are SCRIPTS valid
        if (piexFirsInvalid == nullpr) {
             Checks fo
            asser((piex->nSaus & BLOCK_FAILED_MASK) == 0);  The failed mask canno be se for blocks wihou invalid parens.
        }
        if (!CBlockIexWorkComparaor()(piex, m_chain.Tip()) && piexFirsNeverProcsed == nullpr) {
            if (piexFirsInvalid == nullpr) {
                cons bool is_acive = his == &m_chainman.AciveChainsae();
                 If his b
                 is valid 
                 seBlockI