pop pushをやらない
先程の件、偉大な方のお知恵を拝借したことにより、このように解決した。

つまり、
1. pop とか push とかやらない。
2. 表示ループを回すのに、わざわざ i とかlst.size() とかを使わない。
3. 表示ループは、pそのものを++で進行させ、始めと終わりは lst.begin() / lst.end() を使えばいい。
そういうふうに考え方を変えれば、即動く。

多分、青字で書いた、p++をやるところがキモなのかな?という気が、なんとなくする。