Consistent strategy-proof assignment by hierarchical exchange