#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main()
{
	ios_base::sync_with_stdio(0), cin.tie(0);
	int n, c;
	cin >> n >> c;
	vector<pair<int, int>> vp(2 * n);
	for (int i = 0; i < n; ++i)
	{
		int a, b, c1;
		cin >> a >> b >> c1;
		vp[2 * i] = {a, c1};
		vp[2 * i + 1] = {b + 1, -c1};
	}
	sort(vp.begin(), vp.end());
	ll ans = 0;
	int i;
	vector<pair<int, ll>> nvp;
	for (i = 0; i < 2 * n;)
	{
		ll cur = 0;
		int j = i;
		while (j < 2 * n && vp[i].first == vp[j].first)
		{
			cur += vp[j].second;
			++j;
		}
		nvp.push_back({vp[i].first, cur});
		i = j;
	}
	n = nvp.size();
	ll cur = 0;
	for (int i = 0; i < n - 1; ++i)
	{
		cur += nvp[i].second;
		ans += min(cur, (ll)c) * (nvp[i + 1].first - nvp[i].first);
	}
	cout << ans << '\n';
	return 0;
}
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
 
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;
 
typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;
 
typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;
 
#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define F0R(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
#define trav(a,x) for (auto& a : x)
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)
 
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define ins insert

template<class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
const int MOD = 1000000007;
const char nl = '\n';
const int MX = 100001; //check the limits, dummy

void solve() {

    int N; cin >> N;
    ll C; cin >> C;
    map<int, ll> ev;
    F0R(i, N) {
        int A, B; ll C; cin >> A >> B >> C;
        ev[A]+=C;
        ev[B+1]-=C;
    }

    ll sum = 0;
    ll ans = 0;
    trav(a, ev) {
        sum += a.s;
        auto it = ev.ub(a.f);
        if (it != ev.end()) {
            ans += min(sum, C) * (it->f - a.f);
        }
    }
    cout << ans << nl;

}
 
int main() {
	ios_base::sync_with_stdio(0); cin.tie(0);    

    int T = 1;
//    cin >> T;
    while(T--) {
        solve();
    }

	return 0;
}
 
// read the question correctly (ll vs int)
// template by bqi343

