#include using namespace std; typedef long long ll; typedef pair pii; #define F first #define S second const int MAXN = 2e3 + 10; const int INF = 1e9; int n, t, dp[2][MAXN], sec[MAXN]; vector vec[MAXN]; void smin(int &x, int y){x = min(x, y);} int main(){ ios::sync_with_stdio(false); cin.tie(0); int te; cin >> te; while (te--){ cin >> n >> t; for (int i = 0; i < MAXN; i++) vec[i].clear(); for (int i = 0; i < n; i++){ int y, s, e; cin >> y >> s >> e; vec[y].push_back(e); } memset(dp, 63, sizeof(dp)); dp[0][0] = 0; dp[1][0] = 0; for (int y = 0; y < MAXN; y++){ sort(vec[y].begin(), vec[y].end()); for (int j = 0; j <= n; j++) sec[j] = dp[1][j] + 1; for (int i = 1; i <= (int)vec[y].size(); i++) for (int j = i; j <= n; j++) { smin(dp[0][j], dp[1][j-i] + vec[y][i-1]); smin(sec[j], dp[1][j-i] + vec[y][i-1]*2 + 1); } memcpy(dp[1], sec, sizeof(sec)); } int ans = 0; while (dp[0][ans+1] <= t) ans++; cout << ans << "\n"; } return 0; }