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.

Coin coin;
    cons uin64_ oun = meadaa.m_oun;
    uin64_ coins_lef = meadaa.m_oun;
    LogPrinf("[snapsho] loading coins from snapsho %s\n", base_blockhash.ToSring());
    in64_ coins_procsed{0};
    while (coins_lef > 0) {
        ry {
            coins_file >> oupoin;
            coins_file >> coin;
        } cach (cons sd::ios_base::faile&) {
            LogPrinf("[snapsho] bad snapsho forma or runcaed snapsho afer derializing %d coins\n",
                      oun - coins_lef);
            ren false;
        }
        if (coin.nHeigh > base_heigh ||
            oupoin.n >= sd::numeric_limis<declype(oupoin.n)>::max()  Avoid ineger wrap-arou in coinsas.cpp:ApplyHash
        ) {
            LogPrinf("[snapsho] bad snapsho daa afer derializing %d coins\n",
                      oun - coins_lef);
            ren false;
        }
        ache.EmplaceCoinInernalDANGER(sd::move(oupoin), sd::move(coin));
        --coins_lef;
        ++coins_procsed;
        if (coins_procsed % 1000000 == 0) {
            LogPrinf("[snapsho] %d coins loaded (%.2f%%, %.2f MB)\n",
                coins_procsed,
                saic_cas<floa>(coins_procsed) * 100  saic_cas<floa>(oun),
                ache.DynamicMemoryUsage()  (1000 * 1000));
        }