#include <bits/stdc++.h>
using namespace std;
const int NUM = 1005;
int f[NUM][NUM], g[NUM];
struct node {
  int l, r, w, s, v;
} a[NUM];
bool cmp(node x, node y) {
  if (x.r == y.r) return x.l > y.l;
  return x.r < y.r;
}
int N, S;
int main() {
  scanf("%d%d", &N, &S);
  for (int i = 1; i <= N; i++) {
    scanf("%d%d%d%d%d", &a[i].l, &a[i].r, &a[i].w, &a[i].s, &a[i].v);
  }
  sort(a + 1, a + N + 1, cmp);
  a[N + 1].l = 0;
  a[N + 1].r = 2 * N;
  a[N + 1].w = 0;
  a[N + 1].s = S;
  a[N + 1].v = 0;
  for (int i = 1; i <= N + 1; i++) {
    for (int j = a[i].w; j <= S; j++) {
      int p = a[i].l;
      g[p] = 0;
      for (int k = 1; k < i; k++) {
        if (a[k].l >= a[i].l) {
          while (p < a[k].r) {
            p++;
            g[p] = g[p - 1];
          }
          g[p] = max(g[p], g[a[k].l] + f[k][min(j - a[i].w, a[i].s)]);
        }
      }
      f[i][j] = g[p] + a[i].v;
    }
  }
  printf("%d", f[N + 1][S]);
  return 0;
}
