The performance for Part 2 of Day 23 is terrible[1], but I have gotten the correct answer.
[1] I have discovered that not only does my list type lack amortized constant time append, it's also built on top of a linked list, though in a way that I don't yet have a good mental model for.