#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
//#define int ll
#define ld long double
#define ll long long
#define ull unsigned ll
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x.size())
#define pii pair < int, int >
#define pll pair < ll, ll >
#define debug(x) cerr << (#x) << " = " << (x) << endl
const int mod = 1e9 + 7;
const int N = 6e5+5;
const int B = 61;
const ll OO = 1e18;
template<typename T>
bool umn (T &fi, T se) { return fi > se ? (fi = se, 1) : 0; }
template<typename T>
bool umx (T &fi, T se) { return fi < se ? (fi = se, 1) : 0; }
void slv () {
int n;
cin >> n;
multiset < ll > lp, rp;
ll al = 0, ar = 0;
ll pos = 0, val = 0, d = 0;
for (int i = 0, x, y; i < n; ++i) {
cin >> x >> y;
if (!i) {
--d;
lp.insert(0);
rp.insert(0);
}
if (i) {
ll li = (sz(lp) ? *--lp.end() + al : -OO);
ll ri = (sz(rp) ? *rp.begin() + ar : OO);
ri = min(ri, ar);
// cout << "i = " << i << " " << li << " " << ri << "\n";
val += abs(pos);
d--;
if (0 < li) {
lp.insert(0 - al);
lp.insert(0 - al);
lp.erase(--lp.end());
rp.insert(li - ar);
} else if (li <= 0 && 0 <= ri) {
lp.insert(0 - al);
rp.insert(0 - ar);
} else {
rp.insert(0 - ar);
rp.insert(0 - ar);
rp.erase(rp.begin());
lp.insert(ri - al);
}
}
int diff = x - y;
if (diff < 0) {
al += diff;
ar += diff;
pos += diff;
} else {
ar += diff;
}
// cout << pos << " " << val << "\n";
}
// cout << pos << " " << val << " " << d << "\n";
for (ll p : lp) {
p += al;
// cout << p << " ";
if (p > 0) p = 0;
val += 1ll * (p - pos) * d;
pos = p;
++d;
}
// cout << "\n";
for (ll p : rp) {
p += ar;
// cout << p << " ";
if (p > 0) p = 0;
val += 1ll * (p - pos) * d;
pos = p;
++d;
}
// cout << "\n";
cout << val;
}
signed main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int test = 1;
// cin >> test;
while (test--) {
slv();
cout << "\n";
}
}