#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r;
};
int main() {
  node ss[300];
  int s[300];
  int n, m;
  queue<int> q;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> ss[i].l >> ss[i].r;
  }
  int ans = 0;
  int indexi, indexj;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (j == i) continue;
      int res = s[j] - s[i];
      for (int k = 0; k < m; k++) {
        if (i + 1 <= ss[k].r && i + 1 >= ss[k].l &&
            (j + 1 > ss[k].r || j + 1 < ss[k].l)) {
          res++;
        }
      }
      if (ans < res) {
        ans = res;
        indexi = i;
        indexj = j;
      }
    }
  }
  int cnt = 0;
  for (int k = 0; k < m; k++) {
    if (indexi + 1 <= ss[k].r && indexi + 1 >= ss[k].l &&
        (indexj + 1 > ss[k].r || indexj + 1 < ss[k].l)) {
      cnt++;
      q.push(k + 1);
    }
  }
  cout << ans << endl << cnt << endl;
  while (q.size()) {
    cout << q.front() << " ";
    q.pop();
  }
}
