#include <bits/stdc++.h>
using namespace std;
int n, m;
long long a[10009], re[10009], f[10009], s[10009];
pair<long long, long long> h[10009];
void nhap() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= m; i++) cin >> h[i].first >> h[i].second;
}
void solve() {
  sort(a + 1, a + n + 1);
  sort(h + 1, h + m + 1);
  fill(re + 1, re + n + 1, 100000000000000007);
  for (int i = 1; i <= m; i++) {
    fill(f + 1, f + n + 1, 100000000000000007);
    for (int j = 1; j <= n; j++) s[j] = s[j - 1] + abs(h[i].first - a[j]);
    int p = 0;
    for (int j = 1; j <= n; j++) {
      while (p < j) {
        if (j - p > h[i].second)
          p++;
        else if (re[p] - s[p] < re[p + 1] - s[p + 1])
          break;
        else
          ++p;
      }
      f[j] = min(re[j], re[p] + s[j] - s[p]);
    }
    for (int j = 1; j <= n; j++) re[j] = f[j];
  }
  if (re[n] == 100000000000000007)
    cout << -1;
  else
    cout << re[n];
}
int main() {
  nhap();
  solve();
  return 0;
}
