func_code_string: //Iamskk//   #include <iostream>   #include <iosfwd>   #include <iomanip>   #include <cstdio>   #include <cstring>   #include <cstdlib>   #include <ctime>   #include <cmath>   #include <cassert>   #include <cctype>   #include <climits>   #include <vector>   #include <bitset>   #include <set>   #include <queue>   #include <stack>   #include <map>   #include <deque>   #include <string>   #include <list>   #include <iterator>   #include <sstream>   #include <complex>   #include <fstream>   #include <functional>   #include <numeric>   #include <utility>   #include <algorithm>   #include <assert.h>   #include <unordered_map>   using namespace std;   #define IOS ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(0);   #define endl   n    #define yes cout<< YES <<endl   #define no cout<< NO <<endl   #define pb push_back   #define all(c) (c).begin(),(c).end()   #define rall(c) (c).rbegin(),(c).rend()   #define ai(arr,n) for(int i=0;i<n;i++)cin>>arr[i];   #define ao(arr) for(auto asdfasdfasdf:arr) cout<<asdfasdfasdf<<   ;   #define mi(arr,m,n) for(int i=0;i<m;i++){ for(int j=0;j<n;j++) cin>>arr[i][j];}   #define mo(arr,m,n) for(int i=0;i<m;i++){ for(int j=0;j<n;j++) cout<<arr[i][j]<<   ; cout<<endl;}   #define countsetbits(x) __builtin_popcount(x)   #define ll long long   #define debug cout<< I AM EXECUTING <<endl   #define testcases int asdf; cin>>asdf; while(asdf--)   #define vi vector<int>   #define vll vector<long long int>   #define vppo(prs) for(auto x:prs){cout<<x.first<<   <<x.second<<endl;}   #define For(__,hajmola,adfdf) for(int __ = hajmola; __<adfdf;__++)   #define formax 1e18   #define formin -1e18   string sconvert(ll int n)   {    stringstream ss;    ss<<n;    string str = ss.str();    return str;   }   bool sortbysec(const pair<int,int> &a,                  const pair<int,int> &b)    {        return (a.second > b.second);    }      template<typename T>   void imax(T &x,T y){    x = max(x,y);   }   template<typename T>   void imin(T &x,T y){    x = min(x,y);   }   const int nax = 2e3+1;   ll int dp[nax][nax];   vector<ll int> krr;   ll int answer = 0;   ll int solve(int left,int right){    if(dp[left][right]!=-1){     return dp[left][right];    }     if(left>=right){      return 0;     }        ll int value = krr[right]-krr[left];        return dp[left][right]=value + min(solve(left+1,right),solve(left,right-1));           }   void  single()   {    memset(dp,-1,sizeof(dp));    int n;    cin>>n;    vector<ll int> arr(n);    ai(arr,n);    sort(all(arr));    krr = arr;    answer = solve(0,n-1);    cout<<answer<<endl;    // answer = *max_element(all(arr))-*min_element(all(arr));       return;   }   void multiple()   {    testcases       {     single();    }   }      int main()   {     IOS;    // freopen( input.txt , r ,stdin);     //freopen( output.txt , w ,stdout);     single();   }                                                      