#include <bits/stdc++.h>
using namespace std;
void FastInputOutput() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
struct V {
  int l, r, c;
};
bool cpm(V s, V f) {
  if (f.l > s.l) return true;
  if (f.l == s.l && f.r > s.r) return true;
  return false;
}
vector<V> a[int(2 * 1e5 + 5)];
int main() {
  int n, x, l, r, c;
  scanf("%d%d", &n, &x);
  for (int i = 0; i < n; ++i) {
    scanf("%d%d%d", &l, &r, &c);
    V t;
    t.l = l, t.r = r, t.c = c;
    a[r - l + 1].push_back(t);
  }
  for (int i = 1; i < x; ++i) sort(a[i].begin(), a[i].end(), cpm);
  long long minAns = INT_MAX;
  for (int seg = 1; seg < x; ++seg) {
    long long mini = INT_MAX;
    for (int i = 0, j = 0; i < a[seg].size(); ++i) {
      for (; j < a[x - seg].size(); ++j) {
        if (a[x - seg][j].l + x - seg - 1 >= a[seg][i].l) break;
        mini = min((long long)a[x - seg][j].c, mini);
      }
      minAns = min(mini + a[seg][i].c, minAns);
    }
  }
  printf("%lld", minAns == INT_MAX ? -1 : minAns);
  return 0;
}
