#include <stdio.h>
#include <algorithm>
using namespace std;

struct intv{
	long long l, r, d;
	bool operator <(const intv &t) const{
		return d > t.d;
	}
} I[5050];

long long d[2555][2555][2];

void mn(long long &a, long long b)
{
	if (a > b)
		a = b;
}

int main()
{
	int N; scanf ("%d", &N);
	for (int i = 0; i < N; i++){
		scanf ("%lld %lld", &I[i].l, &I[i].r);
		I[i].d = I[i].l + I[i].r;
	}
	sort(I, I + N);

	long long ans = 1e18;
	int s = N / 2;
	for (int l = s, r = N - s - 1; r <= s; l--, r++){
		for (int i = 0; i <= l; i++) for (int j = 0; j <= r; j++) d[i][j][0] = d[i][j][1] = 1e18;
		d[0][0][0] = 0;

		for (int i = 0; i <= l; i++) for (int j = 0; j <= r; j++) for (int k = 0; k <= 1; k++){
			auto &t = I[i + j + k];
			if (i < l) mn(d[i + 1][j][k], d[i][j][k] + t.r + i * t.d);
			if (j < r) mn(d[i][j + 1][k], d[i][j][k] + t.l + j * t.d);
			if (k < 1) mn(d[i][j][k + 1], d[i][j][k] + l * t.l + r * t.r);
		}
		mn(ans, d[l][r][1]);
	}

	printf ("%lld\n", ans);

	return 0;
}