#include <bits/stdc++.h>
using namespace std;
long long D[5001], dp[5001], v[5001], s[5001];
int n, m, p;
pair<long long, long long> x[5001];
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> v[i];
  for (int i = 1; i <= m; i++) cin >> x[i].first >> x[i].second;
  fill(D + 1, D + n + 1, 1e18);
  sort(v + 1, v + n + 1);
  sort(x + 1, x + m + 1);
  for (int i = 1; i <= m; i++) {
    fill(dp + 1, dp + n + 1, 1e18);
    for (int j = 1; j <= n; j++) s[j] = s[j - 1] + abs(x[i].first - v[j]);
    p = 0;
    for (int j = 1; j <= n; j++) {
      while (p < j) {
        if (j - p > x[i].second)
          p++;
        else if (D[p] + s[j] - s[p] < D[p + 1] + s[j] - s[p + 1])
          break;
        else
          p++;
      }
      dp[j] = min(D[j], D[p] + s[j] - s[p]);
    }
    for (int j = 1; j <= n; j++) D[j] = dp[j];
  }
  cout << (D[n] == 1e18 ? -1 : D[n]);
}
