#include <bits/stdc++.h>
using namespace std;
long long a[2][100010];
pair<long long, int> p[100010];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  bool t = 0;
  for (int i = (1); i <= (n); ++i) {
    scanf("%lld", &p[i].first);
    p[i].second = -1;
  }
  for (int i = (1); i <= (m); ++i)
    scanf("%lld%d", &p[i + n].first, &p[i + n].second);
  sort(p + 1, p + n + m + 1);
  p[0].first = p[1].first;
  for (int i = (n + 1); i <= (n + 5000); ++i) a[0][i] = 1e18;
  for (int i = (1); i <= (n + m); ++i) {
    t ^= 1;
    for (int j = (0); j <= (n + 5000); ++j) {
      long long s = min(n + 5000, max(j - p[i].second, 0));
      a[t][j] = a[t ^ 1][s] + (p[i].first - p[i - 1].first) * abs(n - s);
    }
    for (int j = (n + 5000); j >= (1); --j)
      a[t][j - 1] = min(a[t][j - 1], a[t][j]);
  }
  printf("%lld\n", a[t][n] >= 1e18 ? -1 : a[t][n]);
}
