#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int main()
{
    ll n,k,u,v,w,days;
    cin>>n>>k;
    vector<pair<ll,pair<ll,ll> > > deal;//(w,(u,v))
    vector<pair<ll,ll> > pack[k];
    vector<ll> pack1[k],pack2[k];
    for(ll i=0;i<n;i++)
    {
        cin>>u>>v>>w;
        days=v-u+1;
        if(days>=k)
            continue;
        deal.push_back({w,{u,v}});
        pack[days].push_back({u,w});
    }
    for(ll i=0;i<k;i++)
        sort(pack[i].begin(),pack[i].end());
    for(ll i=0;i<k;i++)
    {
        for(ll j=0;j<pack[i].size();j++)
        {
            pack1[i].push_back(pack[i][j].first);
            pack2[i].push_back(pack[i][j].second);
        }
        ll mini=1e18;
        if(pack2[i].size()==0)
            continue;
        for(ll j=pack2[i].size()-1;j>=0;j--)
        {
            mini=min(mini,pack2[i][j]);
            pack2[i][j]=mini;
        }
    }
    ll ans=1e18;
    for(ll i=0;i<deal.size();i++)
    {
        ll cost=deal[i].first;
        u=deal[i].second.first;
        v=deal[i].second.second;
        days=v-u+1;
        ll left=k-days;
        days=left;
        //search in pack1[days]
        v++;
        ll pos=lower_bound(pack1[days].begin(),pack1[days].end(),v)-pack1[days].begin();
        if(pos==pack1[days].size())
            continue;
        cost+=pack2[days][pos];
        ans=min(ans,cost);
    }
    if(ans==1e18)
        cout<<-1;
    else
        cout<<ans;
}