Dynamic predecessor problem