Dynamic Programming Clustering