lozenge algorithm