#266. 采子摘果子2( cola)

采子摘果子2( cola)

Description

Lyl 今天心情不错,于是走到埃及郊外旅游(会不会碰到 MMY?...PS:MMY 的含义请自行理解)。他边走边向四周望望,发现周围有许多果树。这些树之间互相到达的时间 Lyl 是知道的(假定每两棵树之间都拥有独立的边可以到达)。他数出了这些果树上果子的个数,并且估了估每个的价格(真是个奇怪的人)。Lyl 规定了一种采摘方案,就是对于第 i 棵树来说,它有 a[i]个果子,且所有果子价值为 s[i],摘取时间为 ci。并且,当他摘了第i个树上的果子后,后面他所选择去摘的果树上的果子数必须大于第i棵树上的果子数目 ,说白了就是一个上升序列;并且每到一棵树,他都必须摘下该树上的所有果子。一开始,Lyl可以在任意一棵树,他只有 m 小时,那么,在他所拥有的限定时间内,他想知道,这样摘取的最大价值是多少?

Format

Input

第一行 2 个数:n(表示这条路上的大树数),m(总共时间)

接下来第 n+1 行,每行三个数 a[i],s[i],c[i] (第 i+1 行输入的为第 i 颗果树的信息) 且保证有 1<=a[i]<=2^31-1;1<=s[1]+s[2]+…+s[n]<=2^31-1;s[i]>=0; 1<=c[i]<=100

接下来的 n 行,每行 n 个数,第 i 行第 j 个数表示从树 i 到树 j 的时间。(0<=T[I,j]<=100;)

Output

仅有一个数,即按这样方法摘取的最大价值.

Samples

4 10
1 10 2
2 5 3
3 6 1
4 9 4
0 1 2 3
1 0 3 4
2 3 0 5
3 4 5 0
21

Limitation

对于 60% 据 的数据 ,1<=N<=60,1<=m<=100;

对于 100% 据 的数据 ,1<=N<=100, 1<=m<=1000;