func_code_string: ﻿#include <iostream>   #include <vector>   #include <algorithm>   #include <string>    #include <set>   #include <cmath>   #include <bitset>   #include <iomanip>   #include <queue>   #include <stack>   #include <map>   #include <unordered_map>   #include <unordered_set>   #include <chrono>   #include <random>   #include <complex>   using namespace std;      mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());      inline void boostIO() {    ios_base::sync_with_stdio(0);    cin.tie(0);    cout.tie(0);    cout << fixed << setprecision(10);   }      bool isPrime(int x) {    if (x <= 4 || x % 2 == 0 || x % 3 == 0) return x == 2 || x == 3;    for (int i = 5; i * i <= x; i += 6) if (x % i == 0 || x % (i + 2) == 0) return 0; return 1;   }      typedef long long int ll;   typedef long double ld;   typedef unsigned long long ull;      typedef vector<int> vi;   typedef vector<ll> vll;   typedef pair<int, int> pii;      #define fori(n) for(int i = 0; i < (n); ++i)   #define forj(n) for(int j = 0; j < (n); ++j)   #define fork(n) for(int k = 0; k < (n); ++k)   #define forx(n) for(int x = 0; x < (n); ++x)      #define all(x) (x).begin(), (x).end()   #define rall(x) (x).rbegin(), (x).rend()   #define ff first   #define ss second   #define debug(x) cerr << #x <<   =   << x << endl;   #define debug_p(x) cerr << #x <<     << x.ff <<     << x.ss << endl;   #define debug_v(x) cerr << #x <<    ; for (auto ii : x) cout << i <<    ; cout << endl;   #define debug_vp(x) cerr << #x <<    ; for (auto ii : x) cout <<  [  << ii.ff <<     << ii.ss <<  ] ; cout << endl;   #define mp make_pair   #define rand kjsdflsdfsdlsjdlkfsdjflsjdfl       #define Return cerr<<endl<< RUNTIME:  <<1.0*clock()/CLOCKS_PER_SEC <<   s  <<endl; return 0;      #define PI 3.14159265      ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }   ll lcm(ll a, ll b) { return a * b / gcd(a, b); }      /////////////////////   #define int long long   int Mod = 1e9 + 7;   #define endl   n    /////////////////////      int inf = 1e18;      vector<int> A;   int dp[2000][2000] = {};   int seen[2000][2000] = {};      int rec(int l, int r) {    if (l == r) {     return 0;    }    if (seen[l][r]) {     return dp[l][r];    }    seen[l][r] = 1;    //here    int ans = inf;    ans = min(rec(l+1, r), rec(l, r-1)) + A[r] - A[l];    dp[l][r] = ans;    return dp[l][r];      }      int32_t main() {    boostIO();    int n; cin >> n;    A.assign(n, 0);    fori(n) {     cin >> A[i];    }     sort(all(A));    cout << rec(0, n - 1);   }