#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10,M=1e9;
int n,m;
long long mx[N],ret=0;
struct node {
int a,l,r,w;
} e[N];
int cmp(node x,node y)
{
return x.a<y.a;
}
int main() {
freopen("power.in","r",stdin),freopen("power.out","w",stdout);
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>e[i].a>>e[i].w>>e[i].l>>e[i].r;
sort(e+1,e+n+1,cmp);
for (int i=1;i<=n;i++)
{
int l=i,r=i;
while (r<=n+1 && e[r].a==e[l].a) r++;
i=r-1,r--;
for (int j=l;j<=r;j++)
{
for (int k=0;k<l;k++)
{
if (e[k].r<e[j].l) mx[j]=max(mx[j],mx[k]+e[j].w);
}
ret=max(ret,mx[j]);
}
}
cout<<ret;
}