Source: https://www.math.lsa.umich.edu/~speyer/417/InjectiveSurjective.pdf