#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef pair P; long long int INF = 3e18; double Pi = 3.1415926535897932384626; vector G[500005]; //vector

tree[500010]; priority_queue pql; priority_queue

pqp; //big priority queue priority_queue ,greater > pqls; priority_queue ,greater

> pqps; //small priority queue //top pop int dx[8]={1,0,-1,0,1,1,-1,-1}; int dy[8]={0,1,0,-1,1,-1,-1,1}; char dir[] = "DRUL"; //ll bit[500005]; //↓,→,↑,← #define p(x) cout<=1; i--){ rfact[i-1] = rfact[i] * i; rfact[i-1] %= mod; } return;} ll c3(ll n,ll r){ return (((fact[n] * rfact[r]) % mod) * rfact[n-r]) % mod;} */ ll n,m,num,sum,ans,a,b,c,d,e,g,h,w,i,j,k,q,l,r,idx; ll x[500005],y[500005],z[500005]; ll dp[500005]; char s[500005]; bool flag,dame; int main(){ cin >> n; for(i=1;i<=n;i++){ cin >> x[i]; } sort(x+1,x+n+1); dp[0] = 0; for(i=1;i<=n;i++){ ll res2,res3; if(i <= 1){ res2 = INF; }else{ res2 = dp[i-2] + x[i] - x[i-1]; } if(i <= 2){ res3 = INF; }else{ res3 = dp[i-3] + x[i] - x[i-2]; } dp[i] = min(res2,res3); } for(i=1;i<=n;i++){ //pe(i);p(dp[i]); } p(dp[n]); return 0; }