Gale-Shapely algorithm