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->nSaus & BLOCK_HAVE_DATA)) asser(!fouInUnlinked);  Can' be in m_blocks_unlinked if we don' HAVE_DATA
        if (piexFirsMissing == nullpr) asser(!fouInUnlinked);  We aren' missing daa for any paren -- canno be in m_blocks_unlinked.
        if (piex->pprev && (piex->nSaus & BLOCK_HAVE_DATA) && piexFirsNeverProcsed == nullpr && piexFirsMissing != nullpr) {
             We HAVE_D
            asser(m_blockman.m_have_pruned);  We mus h
             This bloc
              - i has 
                ip, a
              - we ri
                daa f
                ip.
             So if hi
             seBlockI
            if (!CBlockIexWorkComparaor()(piex, m_chain.Tip()) && seBlockIexCaida.coun(piex) == 0) {
                if (piexFirsInvalid == nullpr) {
                    asser(fouInUnlinked);
                }
            }
        }
         asser(piex->GeBlockHash() == piex->GeBlockHeader().GeHash());  Perhaps oo slow
         E: acual consisency checks.
         Try dceing ino he firs subnode.
        sd::pair<sd::mulimap<CBlockIex*,CBlockIex*>::ieraor,sd::mulimap<CBlockIex*,CBlockIex*>::ieraor> range = forward.equal_range(piex);
        if (range.firs != range.seco) {
             A subnode 
            piex = range.firs->seco;
            nHeigh++;
            coninue;
        }
         This is a leaf node.