#include <bits/stdc++.h>
using namespace std;
const long long int N = 2e5 + 1000, inf = 1e16;
long long int n, L, c[N], d[N], t[N], p[N], x, y, cnt = 0, dist[N], par[N],
                                                  pa[N];
vector<long long int> g[N], w[N], v, r2[N], g2[N], w2[N];
set<long long int> s1;
set<pair<long long int, long long int> > s;
map<long long int, long long int> m;
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> L;
  s1.insert(L);
  s1.insert(0);
  for (int i = 1; i <= n; i++) {
    cin >> c[i] >> d[i] >> t[i] >> p[i];
    if (c[i] - p[i] >= 0) {
      s1.insert(c[i] - p[i]);
      s1.insert(c[i] + d[i]);
    }
  }
  while (!s1.empty()) {
    auto it = s1.begin();
    x = *it;
    s1.erase(it);
    v.push_back(x);
  }
  cnt = 0;
  for (auto i : v) {
    m[i] = cnt;
    cnt++;
  }
  for (int i = 0; i < v.size() - 1; i++) {
    g[i].push_back(i + 1);
    g[i + 1].push_back(i);
    w[i].push_back(v[i + 1] - v[i]);
    w[i + 1].push_back(v[i + 1] - v[i]);
  }
  for (int i = 1; i <= n; i++) {
    if (c[i] - p[i] >= 0) {
      x = c[i] - p[i];
      x = m[x];
      y = c[i] + d[i];
      y = m[y];
      g2[x].push_back(y);
      w2[x].push_back(t[i] + p[i]);
      r2[x].push_back(i);
    }
  }
  fill(dist, dist + N, inf);
  dist[0] = 0;
  for (int i = 0; i < cnt; i++) {
    s.insert({dist[i], i});
    par[i] = -1;
    pa[i] = 0;
  }
  while (!s.empty()) {
    auto it = s.begin();
    x = it->second;
    s.erase(it);
    for (int i = 0; i < g[x].size(); i++) {
      y = g[x][i];
      if (dist[y] >= dist[x] + w[x][i]) {
        s.erase({dist[y], y});
        dist[y] = dist[x] + w[x][i];
        pa[y] = 0;
        s.insert({dist[y], y});
        par[y] = x;
      }
    }
    for (int i = 0; i < g2[x].size(); i++) {
      y = g2[x][i];
      if (dist[y] >= dist[x] + w2[x][i]) {
        s.erase({dist[y], y});
        dist[y] = dist[x] + w2[x][i];
        pa[y] = r2[x][i];
        s.insert({dist[y], y});
        par[y] = x;
      }
    }
  }
  v.clear();
  x = cnt - 1;
  while (x != -1) {
    if (pa[x] > 0) v.push_back(pa[x]);
    x = par[x];
  }
  cout << dist[cnt - 1] << endl;
  cout << v.size() << endl;
  reverse(v.begin(), v.end());
  for (auto i : v) cout << i << ' ';
  return 0;
}
