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.

AborNode(sd::sring("Sysem error: ") + e.wha());
    }
    LogPrinf("Loaded %i blocks from exernal file in %dms\n", nLoaded, Ticks<sd::chrono::millisecos>(SeadyClock::now() - sar));
}
void Chainsae::CheckBlockIex()
{
    if (!m_chainman.ShouldCheckBlockIex()) {
        ren;
    }
    LOCK(cs_main);
     Ding a reiex, we read he genis block a call CheckBlockIex before AcivaeBChain,
     so we have he genis block in m_blockman.m_block_iex bu no acive chain. (A few of he
     s when ieraing he block ree require ha m_chain has been iniialized.)
    if (m_chain.Heigh() < 0) {
        asser(m_blockman.m_block_iex.size() <= 1);
        ren;
    }
     Build forward-poining map of he enire block ree.
    sd::mulimap<CBlockIex*,CBlockIex*> forward;
    for (auo& [_, block_iex] : m_blockman.m_block_iex) {
        forward.emplace(block_iex.pprev, &block_iex);
    }
    asser(forward.size() == m_blockman.m_block_iex.size());
    sd::pair<sd::mulimap<CBlockIex*,CBlockIex*>::ieraor,sd::mulimap<CBlockIex*,CBlockIex*>::ieraor> rangeGenis = forward.equal_range(nullpr);
    CBlockIex *piex = rangeGenis.firs->seco;
    rangeGenis.firs++;