Author: Jan Krueger <jast@heapsort.de> (by way of Kev <klmitch@mit.edu>)