#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
struct ab {
	int pon;
	int br;
};
int main()
{
	int n, m, x, a, sum = 0, proizvod = 0, prtmp = 0;
	cin >> n >> m;
	vector<int> niz(m + 1);
	vector<ab> mat;
	vector<int> broj;
	for (int i = 0; i <= m; i++) {
		niz.at(i) = 0;
	}
	for (int i = 0; i < n; i++) {
		cin >> x;
		niz.at(x) = niz.at(x) + 1;
	}
	for (int i = 0; i <= m; i++) {
		a = niz.at(i);
		if (a > 0 || i == 0) {
			mat.push_back({ a, i });
			sum += a;
			broj.push_back(sum);
		}
	}
	//for (int i = 0; i < broj.size(); i++) cout << " broj " << broj.at(i) << endl;

	int sz = broj.size() - 1;
	for (int i = 0; i < sz; i++) {
		proizvod = proizvod + broj[i] * (n - broj[i])*(mat[i + 1].br - mat[i].br);
	//	cout << "poc" << broj[i] << "" << (n - broj[i]) << "" << (mat[i + 1].br - mat[i].br) << "=" << proizvod << endl;
	}
	for (int i = 0; i < sz; i++) {
		prtmp = 0;
		for (int j = 0; j < i; j++) {
			broj[j] = broj[j] + mat[i].pon;
			prtmp = prtmp + broj[j] * (n - broj[j])*(mat[j + 1].br - mat[j].br);
	//		cout << "levo" << broj[j] << "" << (n - broj[j]) << "" << (mat[j + 1].br - mat[j].br) << "=" << prtmp << endl;
		}
		for (int j = i; j < sz; j++) {
			broj[j] = broj[j] - mat[i].pon;
			prtmp = prtmp + broj[j] * (n - broj[j])*(mat[j + 1].br - mat[j].br);
	//		cout << "desno" << broj[j] << "" << (n - broj[j]) << "" << (mat[j + 1].br - mat[j].br) << "=" << prtmp << endl;
		}
		if (prtmp < proizvod) proizvod = prtmp;
	}
	cout << proizvod;
	return 0;
}