#include
#include
#include
#include
#include
#define INF 0x7fffffff
using namespace std;
const int MAXN = 1020;
const int MAXM = MAXN*MAXN;
struct edge
{
int to, c;
int next;
}edge[MAXM];
int size,head[MAXN];
void addEdge(int from, int to, int c)
{
edge[size].to = to;
edge[size].c = c;
edge[size].next = head[from];
head[from] = size++;
edge[size].to = from;
edge[size].c = 0;
edge[size].next = head[to];
head[to] = size++;
}
int n,m,ans,Max; int h[MAXN],gap[MAXN],cur[MAXN],pre[MAXN];
int SAP_GAP(int start,int end,int N)
{
int cur_flow,flow_ans=0,u,tmp,neck,i;
memset(h,0,sizeof(h));
memset(gap,0,sizeof(gap));
memset(pre,-1,sizeof(pre));
for(i=0;i<=N;i++)
cur[i]=head[i];
gap[0]=N;
u=start;
while(h[start]<</font>N)
{
if(u==end)
{
cur_flow=INF;
for(i=start;i!=end;i=edge[cur[i]].to)
{ if(cur_flow>edge[cur[i]].c) {
neck=i;
cur_flow=edge[cur[i]].c; } }
for(i=start;i!=end;i=edge[cur[i]].to)
{
tmp=cur[i];
edge[tmp].c-=cur_flow;
edge[tmp^1].c+=cur_flow;
}
flow_ans+=cur_flow;
u=neck;
}
for(i=cur[u];i!=-1;i=edge[i].next)
if(edge[i].c&&h[u]==h[edge[i].to]+1) break;
if(i!=-1)
{ cur[u]=i;
pre[edge[i].to]=u;
u=edge[i].to;
}
else
{ gap[h[u]]--;
if(gap[h[u]]==0) break;
cur[u]=head[u];
for(tmp=N,i=head[u];i!=-1;i=edge[i].next)
if(edge[i].c)
tmp=min(tmp,h[edge[i].to]);
h[u]=tmp+1;
++gap[h[u]];
if(u!=start) u=pre[u];
}
}
return flow_ans;
}
void init()
{
int pi, si, ei;
scanf("%d%d", &n, &m);
size = 0;ans = 0;Max = 0;
memset(head, -1, sizeof(head));
for (int i = 1; i <= n; i++)
{ scanf("%d%d%d", &pi, &si, &ei);
ans += pi;
addEdge(0, i, pi);
Max = max(Max, ei);
for (int j = si; j <= ei; j++)
{ addEdge(i, n + j, 1);
}
}
for (int i = 1; i <= Max; i++)
addEdge(n + i,n+Max+1, m);
}
int main()
{
//freopen("in.txt","r",stdin);
int test;
int ans_s;
scanf("%d", &test);
for (int i = 0; i <</font> test; i++)
{
init();
ans_s=SAP_GAP(0,n+Max+1,n+Max+2);
if ( ans_s == ans)
printf("Case %d: Yes\n\n", i+1);
else
printf("Case %d: No\n\n", i+1);
}
return 0;
}