/*
ID: C043
LANG: C++
TASK: ots
*/

#include<stdio.h>
#include<stdlib.h>

int n, pts[1048576];

int cmp(const void *a, const void *b) {
	return *(int*)a - *(int*)b;
}
void input() {
	scanf("%d", &n);
	for(int i = 0; i < n; ++i) {
		scanf("%d", &pts[i]);
		//printf("\"%d\" ", pts[i]);
	}
	qsort(pts, n, sizeof(int), cmp);
}

void solve() {
	int c = 2, minc = pts[2]-pts[0], minnc = pts[1]-pts[0], nminc, nminnc;
	//printf("%d %d %d\n", c, minnc, minc);
	while(c < n-3) {
			
		nminnc = minc;
		nminc = (minc+pts[c]-pts[c-1]) <? (minnc+pts[c]-pts[c-1]);
		
		minnc = nminnc;
		minc = nminc;
		
		//printf("%d %d %d\n", c, minnc, minc);
		
		++c;
	}
	int s1, s2;
	s1 = minc+pts[n-1]-pts[n-2];
	s2 = minnc+pts[n-1]-pts[n-3];
	printf("%d\n", s1 <? s2);
}

int main() {
	input();
	if(n == 0) {
		printf("0\n");
	} else if(n == 1) {
		printf("0\n");
	} else if(n == 2) {
		printf("%d\n", pts[1]-pts[0]);
	} else if(n == 3) {
		printf("%d\n", pts[2]-pts[0]);
	} else if(n == 4) {
		printf("%d\n", pts[3]-pts[2]+pts[1]-pts[0]);
	} else {
		solve();
	}
	return 0;
}
