Source: https://cemc.uwaterloo.ca/contests/euclid_eWorkshop/eew_ps6-f.pdf