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