Source: https://www.math.clemson.edu/~kevja/COURSES/Math319/Notes/BinaryOperations-Exercises.pdf