/*
 * IPSC 2004 / Paths
 * Goober
 *
 * Vzorovy program (najde odpovede k zadanym vstupom)
 * Pouzitie: ./solve < easy.in    alebo ./solve < hard.in
 */

#include <stdio.h>

#define MaxN 400

int n;
int path[MaxN][MaxN];
int dist[MaxN];
char finished[MaxN];
struct distance { int a, b, length; } heap[MaxN*MaxN/2];
int hcnt;
int infty;

void adddist(int a, int b, int length)
 {
  hcnt++;
  heap[hcnt].a=a; heap[hcnt].b=b; heap[hcnt].length=length;
 }

void heapify(int s)
 {
  struct distance tmp;
  int sn;

  sn=2*s;
  while(sn<=hcnt)
   {
    if (sn+1<=hcnt) if (heap[sn+1].length<heap[sn].length) sn++;
    if (heap[sn].length>=heap[s].length) break;
    tmp=heap[sn]; heap[sn]=heap[s]; heap[s]=tmp;
    s=sn; sn=2*s;
   }
 }

void makeheap(void)
 {
  int i;
  for (i=hcnt/2;i>=1;i--) heapify(i);
 }

int bestpath(int s, int d)
 {
  int i, j, m;
  
  for (i=0;i<n;i++) dist[i]=n*infty; dist[s]=0;
  for (i=0;i<n;i++) finished[i]=0;

  while(!finished[d])
   {
    for (m=0;m<n;m++) if (!finished[m]) break;
    for (j=m+1;j<n;j++) if (!finished[j] && dist[j]<dist[m]) m=j;
    if (dist[m]==n*infty) break;

    finished[m]=1;
    for (j=0;j<n;j++) if (dist[m]+path[m][j]<dist[j]) dist[j]=dist[m]+path[m][j];
   }
  return dist[d];
 }

int main(void)
 {
  int a, b, edges, maxl, cases;

  scanf("%d", &cases);
  while(cases--)
   {
/* Read input */
    hcnt=0; maxl=0;
    scanf("%d %d", &n, &edges);
    for (a=0;a<n-1;a++) for (b=a+1;b<n;b++)
     {
      int l;
    
      scanf("%d", &l);
      if (l>maxl) maxl=l;
      adddist(a, b, l);
     }
    infty=(maxl+1);

/* Prepare graph */
    for (a=0;a<n;a++) for (b=0;b<n;b++) path[a][b]=infty;
    for (a=0;a<n;a++) path[a][a]=0;

/* Process distances */
    makeheap();
    while(hcnt>0 && edges>=0)
     {
      int minl, l;
    
      a=heap[1].a; b=heap[1].b; l=heap[1].length;
      heap[1]=heap[hcnt]; heapify(1);
    
      minl=bestpath(a, b);
      if (l>minl) break;
      if (l<minl) { path[a][b]=path[b][a]=l; edges--; }
      hcnt--;
     }

/* Output results */
    if (hcnt>0 || edges<0) printf("NO\n");
    else printf("YES\n");
   }

  return 0;
 }
