schrages algorithm