add patience sorting impl