Clustering algorithm.