#include <bits/stdc++.h>
using namespace std;
const long long N = 5005;
long long a[N], lim[N], sum[N];
pair<long long, long long> b[N];
long long rd() {
  long long x;
  cin >> x;
  return x;
}
long long f[N][N], q[N];
signed main() {
  long long n, m;
  n = rd();
  m = rd();
  for (long long i = 1; i <= n; ++i) a[i] = rd();
  sort(a + 1, a + n + 1);
  for (long long i = 1; i <= m; ++i) b[i] = {rd(), rd()};
  sort(b + 1, b + m + 1);
  for (long long i = 1; i <= m; ++i) lim[i] = lim[i - 1] + b[i].second;
  if (lim[m] < n) return puts("-1"), 0;
  memset(f, 0x7f, sizeof(f));
  f[0][0] = 0;
  for (long long i = 1; i <= m; ++i) {
    long long l = 1, r = 0;
    q[++r] = f[i][0] = 0;
    for (long long j = 1; j <= min(n, lim[i]); ++j) {
      sum[j] = sum[j - 1] + abs(a[j] - b[i].first);
      while (l <= r && ((j - q[l] > b[i].second))) ++l;
      while (l <= r && (f[i - 1][q[r]] - sum[q[r]] > f[i - 1][j] - sum[j])) --r;
      q[++r] = j;
      f[i][j] = min(f[i - 1][q[l]] + sum[j] - sum[q[l]], f[i - 1][j]);
    }
  }
  cout << f[m][n];
  return 0;
}
