#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n, q; cin >> n >> q;
int a[n];
for(int i = 0; i < n; i++){
cin >> a[i];
}
// Xây dựng mảng mục tiêu: chỉ số i được truy vấn bao nhiêu lần
// => dùng mảng hiệu
int d[n] = {0};
while(q--){
int l, r; cin >> l >> r;
--l; --r;
d[l] += 1;
d[r + 1] -= 1;
}
// Tính mảng cộng dồn => chính là mảng mục tiêu
int F[n];
F[0] = d[0];
for(int i = 1; i < n; i++){
F[i] = F[i - 1] + d[i];
}
// Sx mảng mục tiêu, mảng ban đầu theo thứ tự giảm dần
sort(F, F + n, greater<int>());
sort(a, a + n, greater<int>());
ll res = 0;
for(int i = 0; i < n; i++){
res += 1ll * a[i] * F[i];
}
cout << res << endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CgoKaW50IG1haW4oKXsKCWludCBuLCBxOyBjaW4gPj4gbiA+PiBxOwoJaW50IGFbbl07Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQljaW4gPj4gYVtpXTsKCX0KCS8vIFjDonkgZOG7sW5nIG3huqNuZyBt4bulYyB0acOqdTogY2jhu4kgc+G7kSBpIMSRxrDhu6NjIHRydXkgduG6pW4gYmFvIG5oacOqdSBs4bqnbgoJLy8gPT4gZMO5bmcgbeG6o25nIGhp4buHdQoJaW50IGRbbl0gPSB7MH07Cgl3aGlsZShxLS0pewoJCWludCBsLCByOyBjaW4gPj4gbCA+PiByOwoJCS0tbDsgLS1yOwoJCWRbbF0gKz0gMTsKCQlkW3IgKyAxXSAtPSAxOwoJfQoJLy8gVMOtbmggbeG6o25nIGPhu5luZyBk4buTbiA9PiBjaMOtbmggbMOgIG3huqNuZyBt4bulYyB0acOqdQoJaW50IEZbbl07CglGWzBdID0gZFswXTsKCWZvcihpbnQgaSA9IDE7IGkgPCBuOyBpKyspewoJCUZbaV0gPSBGW2kgLSAxXSArIGRbaV07Cgl9CgkvLyBTeCBt4bqjbmcgbeG7pWMgdGnDqnUsIG3huqNuZyBiYW4gxJHhuqd1IHRoZW8gdGjhu6kgdOG7sSBnaeG6o20gZOG6p24KCXNvcnQoRiwgRiArIG4sIGdyZWF0ZXI8aW50PigpKTsKCXNvcnQoYSwgYSArIG4sIGdyZWF0ZXI8aW50PigpKTsKCWxsIHJlcyA9IDA7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQlyZXMgKz0gMWxsICogYVtpXSAqIEZbaV07Cgl9Cgljb3V0IDw8IHJlcyA8PCBlbmRsOwp9Cgo=