Source: https://yufeizhao.com/olympiad/bijections.pdf