#include <bits/stdc++.h>
#define ll long long
#define all(v) v.begin(),v.end()
#define MASK(i) (1LL << (i))
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define forr(i,l,r,add) for(int i = l;i <= r; i = i + add)
#define fodd(i,l,r,sub) for(int i = l;i >= r ; i = i - sub)
template <typename T1, typename T2> bool minimize(T1 &a, T2 b) {if (a > b) {a = b; return true;} return false;}
template <typename T1, typename T2> bool maximize(T1 &a, T2 b) {if (a < b) {a = b; return true;} return false;}
using namespace std;
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
#define rand rd
long long Rand(long long l , long long h){
assert(l <= h);
return l + 1ll * rd() % (h - l + 1) * (rd() % (h - l + 1)) % (h - l + 1);
}
//////////////////////////////////////////////////////////// end of template ////////////////////////////////////////////////////////////
const int MAX = 5005 , MOD = 1e9 + 7;
ii save[MAX];
int n;
void INP(){
cin >> n;
forr(i , 1 , n , 1) cin >> save[i].fi >> save[i].se;
sort(save + 1 , save + 1 + n);
int res = 0;
forr(i , 1 , n , 1){
int le = -1 , ri = 1e6 + 5;
forr(j , i + 1 , n , 1){
if(le >= 1 && ri <= 1e6){
if(save[j].se > le && save[j].se < ri){
res = (res + 1ll * (save[j].fi - save[i].fi - 1) * (ri - le - 1)) % MOD;
}
}
if(save[j].se < save[i].se) maximize(le , save[j].se);
else minimize(ri , save[j].se);
}
}
cout << res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#define TASK ""
//freopen(TASK".inp" , "r" , stdin);
//freopen(TASK".out" , "w" , stdout);
INP();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgTUFTSyhpKSAoMUxMIDw8IChpKSkKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBmb3JyKGksbCxyLGFkZCkgZm9yKGludCBpID0gbDtpIDw9IHI7IGkgPSBpICsgYWRkKQojZGVmaW5lIGZvZGQoaSxsLHIsc3ViKSBmb3IoaW50IGkgPSBsO2kgPj0gciA7IGkgPSBpIC0gc3ViKQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBib29sIG1pbmltaXplKFQxICZhLCBUMiBiKSB7aWYgKGEgPiBiKSB7YSA9IGI7IHJldHVybiB0cnVlO30gcmV0dXJuIGZhbHNlO30KdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gYm9vbCBtYXhpbWl6ZShUMSAmYSwgVDIgYikge2lmIChhIDwgYikge2EgPSBiOyByZXR1cm4gdHJ1ZTt9IHJldHVybiBmYWxzZTt9Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbXQxOTkzNyByZChjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwojZGVmaW5lIHJhbmQgcmQKCmxvbmcgbG9uZyBSYW5kKGxvbmcgbG9uZyBsICwgbG9uZyBsb25nIGgpewoJYXNzZXJ0KGwgPD0gaCk7CglyZXR1cm4gbCArIDFsbCAqIHJkKCkgJSAoaCAtIGwgKyAxKSAqIChyZCgpICUgKGggLSBsICsgMSkpICUgKGggLSBsICsgMSk7Cn0KCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gZW5kIG9mIHRlbXBsYXRlIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKY29uc3QgaW50IE1BWCA9IDUwMDUgLCBNT0QgPSAxZTkgKyA3OwppaSBzYXZlW01BWF07CmludCBuOwoKdm9pZCBJTlAoKXsKICAgIGNpbiA+PiBuOwogICAgZm9ycihpICwgMSAsIG4gLCAxKSBjaW4gPj4gc2F2ZVtpXS5maSA+PiBzYXZlW2ldLnNlOwogICAgc29ydChzYXZlICsgMSAsIHNhdmUgKyAxICsgbik7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvcnIoaSAsIDEgLCBuICwgMSl7CiAgICAgICAgaW50IGxlID0gLTEgLCByaSA9IDFlNiArIDU7CiAgICAgICAgZm9ycihqICwgaSArIDEgLCBuICwgMSl7CiAgICAgICAgICAgIGlmKGxlID49IDEgJiYgcmkgPD0gMWU2KXsKICAgICAgICAgICAgICAgIGlmKHNhdmVbal0uc2UgPiBsZSAmJiBzYXZlW2pdLnNlIDwgcmkpewogICAgICAgICAgICAgICAgICAgIHJlcyA9IChyZXMgKyAxbGwgKiAoc2F2ZVtqXS5maSAtIHNhdmVbaV0uZmkgLSAxKSAqIChyaSAtIGxlIC0gMSkpICUgTU9EOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHNhdmVbal0uc2UgPCBzYXZlW2ldLnNlKSBtYXhpbWl6ZShsZSAsIHNhdmVbal0uc2UpOwogICAgICAgICAgICBlbHNlIG1pbmltaXplKHJpICwgc2F2ZVtqXS5zZSk7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCByZXM7Cgp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgI2RlZmluZSBUQVNLICIiCiAgICAvL2ZyZW9wZW4oVEFTSyIuaW5wIiAsICJyIiAsIHN0ZGluKTsKICAgIC8vZnJlb3BlbihUQVNLIi5vdXQiICwgInciICwgc3Rkb3V0KTsKICAgIElOUCgpOwogICAgcmV0dXJuIDA7Cn0K