Problem 54, work in progress.