Gave up on the bonus question. If it takes you over half an hour to
solve it, it'll probably take me a week lol.