fn must be a predicate of two arguments; returns the element which, according to the predicate, beats all the others.