原题
#include<iostream>
#include<algorithm>
using namespace std;
#define fl(i,a,b) for(int i = a;i<(b);i++)
#define fg(i,a,b) for(int i = a;i>(b);i--)
#define fle(i,a,b) for(int i = a;i<=(b);i++)
#define fge(i,a,b) for(int i = a;i>=(b);i--)
#define inf 0x3f3f3f3f
#define long_inf 0x3f3f3f3f3f3f3f3f
#define ll long long
#define fi first
#define se second
#define mp make_pair
#define maxn 3005
struct line{
int l,r;
}lines[maxn];
int dp[maxn],black[maxn];
int n;
ll ans;
bool cmp(line a,line b){
return a.l < b.l;
}
int main()
{
cin >> n;
fle(i,1,n){
cin >> lines[i].l >> lines[i].r;
}
sort(lines+1,lines+1+n,cmp);
dp[1] = lines[1].r - lines[1].l;
black[1] = inf;
fle(i,2,n){
fle(j,1,i){
if(lines[j].l > lines[i].r&&lines[j].l < black[i]){
dp[j] = min(dp[j],dp[i] + (lines[j].r - lines[j].l));
}
else{
black[i] = min(black[i],lines[j].r);
}
}
}
cout << dp[n];
return 0;
}