global results = (); function match (people) { if (people.empty) { return SUCCESS } $x = people.pop; foreach $y (people) { if (validpair($x, $y) { if (match(people.remove($y)) == SUCCESS) { results.push( {$x, $y} ); return SUCCESS; } } } return FAILURE; }