#include <stdio.h>
#include <math.h>

#define MAXN 1000
#define EPS 1e-4

double dJ, D;
int n;
struct cable {
  double x, z, d;
} C[MAXN];

int G[MAXN+2][MAXN+2];
int V[MAXN+2];

void error() {
  fprintf(stderr, "Wrong input\n");
  exit(1);
}

void Fill(int z) {
  int i;

  if (V[z]) return;
  V[z]=1;
  for (i=0; i<=n+1; i++) 
    if (G[z][i]) Fill(i);
}

double Len(double x, double y) {
  return sqrt(x*x+y*y);
}

void DoPipe() {
  int i,j;
  double x1, y1, z1, x2, y2, z2, d;
  double vx, vy, len;
  
  scanf("%lf %d ", &D, &n);
  scanf("%lf %lf %lf %lf %lf %lf %lf ", &x1, &y1, &z1, &x2, &y2, &z2, &d);
  if (z1!=z2) error();
  vy = x2-x1; vx = y1-y2;
  len = Len(vx, vy);
  vx /= len; vy /= len;  
  
  for (i=0; i<n; i++) {
    if (fabs(vx*(x2-x1)+vy*(y2-y1))>EPS) error();
    if (z1!=z2) error();
    C[i].d = d;
    C[i].x = vx*x1 + vy*y1;
    C[i].z = z1;
    if (i<n-1) scanf("%lf %lf %lf %lf %lf %lf %lf ", &x1, &y1, &z1, &x2, &y2, &z2, &d);
  }

  for (i=0; i<n; i++) {
    for (j=0; j<n; j++) {
      G[i][j] = Len(C[i].x-C[j].x, C[i].z-C[j].z) < C[i].d/2 + C[j].d/2 + dJ;
    }
    G[i][n] = G[n][i] = C[i].x - C[i].d/2 - dJ < -D/2;
    G[i][n+1] = G[n+1][i] = C[i].x + C[i].d/2 + dJ > D/2;
    V[i] = 0;
  }
  V[n]=V[n+1]=0;
  G[n+1][n] = G[n][n+1] = D<dJ;
  Fill(n);
  if (V[n+1]) printf("NO\n"); 
  else printf("YES\n");  
}

int main() {
  int i,p;
  scanf("%lf %d ", &dJ, &p);
  for (i=0; i<p; i++) DoPipe();
  return 0;
}
