This solution is bad, I think, but at least it's not just my cycles solve.