#include <algorithm>
#include <bits/stdc++.h>
        
using namespace std;
using ll=long long;
 
bool chmin(int& a, int b){ if(a > b){ a = b; return 1; } return 0; }
bool chmax(int& a, int b){ if(a < b){ a = b; return 1; } return 0; }
constexpr ll TEN(int n) { return (n == 0) ? 1 : 10 * TEN(n - 1); }
const ll MOD = 1000000007LL;

int main() {
    int N; ll C; 
    cin >> N >> C;
    vector<ll> as(N),bs(N),cs(N);
    set<int> abs;
    for (int i = 0; i < N; ++i) {
        cin >> as[i] >> bs[i] >> cs[i];
        bs[i]++; 
        abs.insert(as[i]);
        abs.insert(bs[i]);
    }
    unordered_map<ll,int> inds;
    vector<ll> inds2(abs.size()+1);
    int cnt = 0;
    for (ll x : abs) {
        inds[x] = ++cnt;
        inds2[cnt] = x;
    }
    vector<ll> dps(cnt+1,0);
    for (int i = 0; i < N; ++i) {
        int ia = inds[as[i]]; 
        int ib = inds[bs[i]]; 
        dps[ia] += cs[i]; 
        dps[ib] -= cs[i]; 
    }
    ll ans = 0;
    for (int i = 1; i < cnt; ++i) {
        dps[i] += dps[i-1];
        ans += min(dps[i],C) * (inds2[i+1]-inds2[i]);
    }
    cout << ans << endl;

    return 0;
}
#include "bits/stdc++.h"
#define int long long
#define endl '\n'
using namespace std;
 
typedef long long ll;
typedef long double ld;
#define db(x) cerr << #x << ": " << x << '\n';
#define read(a) int a; cin >> a;
#define reads(s) string s; cin >> s;
#define readb(a, b) int a, b; cin >> a >> b;
#define readc(a, b, c) int a, b, c; cin >> a >> b >> c;
#define readarr(a, n) int a[(n) + 1] = {}; FOR(i, 1, (n)) {cin >> a[i];}
#define readmat(a, n, m) int a[n + 1][m + 1] = {}; FOR(i, 1, n) {FOR(j, 1, m) cin >> a[i][j];}

#define print(a) cout << a << endl;
#define printarr(a, n) FOR (i, 1, n) cout << a[i] << " "; cout << endl;
#define printv(v) for (int i: v) cout << i << " "; cout << endl;
#define printmat(a, n, m) FOR (i, 1, n) {FOR (j, 1, m) cout << a[i][j] << " "; cout << endl;}
#define all(v) v.begin(), v.end()
#define sz(v) (int)(v.size())
#define rz(v, n) v.resize((n) + 1);
#define pb push_back
#define fi first
#define se second
#define vi vector <int>
#define pi pair <int, int>
#define vpi vector <pi>
#define vvi vector <vi>
#define setprec cout << fixed << showpoint << setprecision(20);
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define FORD(i, a, b) for (int i = (a); i >= (b); i--)
const ll inf = 1e18;
const ll mod = 1e9 + 7;
const ll N = 2e5 + 1;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int power (int a, int b = mod - 2)
{
    int res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}

signed main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	
	readb(n, fix);
	vpi v;
	FOR (i, 1, n)
	{
	    readc(a, b, c);
	    v.pb({a, c});
	    v.pb({b + 1, -c});
	}
	
	sort(all(v));
	int cost = 0, sum = 0, prev = 0;
	for (pi i: v)
	{
	    cost += min(fix, sum)*(i.fi - prev);
	    sum += i.se;
	    prev = i.fi;
	}
	
	print(cost);
}

















