code: def clusters
        @clusters_result ||=begin
          if @unique <= 1 # A single cluster that contains all elements
            return [data]
          end
  
          rows = @data_size
          cols = kmax
  
          distance = *Matrix.zero(cols + 1, rows + 1) # 'D'
          backtrack = *Matrix.zero(cols + 1, rows + 1) # 'B'
  
          fill_dp_matrix(data.insert(0, nil), distance, backtrack)
  
          # Choose an optimal number of levels between Kmin and Kmax
          kopt = select_levels(data, backtrack, kmin, kmax)
          backtrack = backtrack[0..kopt]
  
          results = []
          backtrack(backtrack) do |k, left, right|
            results[k] = data[left..right]
          end
          results.drop(1)
        end
      end
docs: Input:
    data -- a vector of numbers, not necessarily sorted
    kmin -- the minimum number of clusters expected
    kmax -- the maximum number of clusters expected
   If only kmin is given exactly kmin clusters will be returned
   else algorithm chooses an optimal number between Kmin and Kmax
   returns clustered data as array