#include <bits/stdc++.h>
using namespace std;
long long bit[300000 + 9];
long long arr[300000 + 9];
long long ind[300000 + 9];
long long n;
long long query(long long idx) {
  long long sum = 0;
  for (; idx; idx -= (idx & -idx)) sum += bit[idx];
  return sum;
}
void upd(long long k, long long v) {
  for (; k <= n; k += (k & -k)) bit[k] += v;
}
void range_upd(long long i, long long j, long long v) {
  upd(i, v);
  upd(j + 1, -v);
}
int main() {
  long long q;
  scanf("%I64d %I64d", &n, &q);
  for (int i = 0; i < n; i++) scanf("%I64d", &arr[i]);
  long long x, y;
  while (q--) {
    scanf("%I64d %I64d", &x, &y);
    upd(x, 1);
    upd(y + 1, -1);
  }
  for (int i = 0; i < n; i++) ind[i] = query(i + 1);
  sort(ind, ind + n);
  sort(arr, arr + n);
  long long sum = 0;
  for (int i = 0; i < n; i++) sum += ind[i] * arr[i];
  printf("%I64d", sum);
  return 0;
}
