/*input
4 12
15 7 4 19 3 30 14 1 5 23 17 25






*/

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pii pair<long,long>
#define pb push_back
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define f first
#define s second
int const K = 5001;
int n,k;
vector<pii> v;

vector<int> b;

int const N = 1e5 + 10;
int a[N];
bool comp(pii i, pii j){
	return abs(a[i.f] - a[i.s]) < abs(a[j.f] - a[j.s]);
}

signed main(){
	IOS;
	cin >> k >> n;
	for(int i = 0 ; i < n ; i++){
		cin >> a[i];
	}
	sort(a,a+n);
	for(int i = 0 ; i < n -1; i++){
		v.pb({i,i+1});
	}
	sort(v.begin(), v.end(),comp);
	bool vis[n]{};
	int j = 0;
	while(b.size() <= 2 * k && j < n - 1){
		if(!vis[v[j].f]){
			vis[v[j].f] = 1;
			b.pb(a[v[j].f]);
		}
		if(!vis[v[j].s]){
			vis[v[j].s] = 1;
			b.pb(a[v[j].s]);
		}
		j++;
	}	
	sort(b.begin(), b.end());
	n = b.size();
	int dp2[3][k+1][2];
	for(int i=0;i<3;i++){
		for(int j=1;j<=k;j++){
			dp2[i][j][0]=1e15;
			dp2[i][j][1]=1e15;
		}
	}
	//for(auto x:b) cout<<x<<" ";
	//	cout<<"\n";
	dp2[0][0][0]=0;
	dp2[1][0][0]=0;
	dp2[1][1][1]=b[1]-b[0];
	for(int i=2;i<b.size();i++){
		for(int j=1;j<=k;j++){
			dp2[2][j][0]=min(dp2[1][j][0],dp2[1][j][1]);
			dp2[2][j][1]=b[i]-b[i-1]+min(dp2[0][j-1][0],dp2[0][j-1][1]);
		}
		for(int ii=0;ii<2;ii++){
			for(int j=0;j<=k;j++){
				//cout<<dp[i][j][0]<<" "<<dp[i][j][1]<<" ";
				dp2[ii][j][0]=dp2[ii+1][j][0];
				dp2[ii][j][1]=dp2[ii+1][j][1];
			}
			
		}
	}

	cout << min(dp2[1][k][0],dp2[1][k][1]) << endl;
	return 0;
} 