public static void main ( String [ ] args ) {
  Scanner in = new Scanner ( System . in ) ;
  int T = in . nextInt ( ) ;
  for ( int t = 0 ;
  t < T ;
  t ++ ) {
    int N = in . nextInt ( ) ;
    int M = in . nextInt ( ) ;
    int [ ] [ ] [ ] tiles = new int [ N ] [ 2 ] [ 2 ] ;
    for ( int n = 0 ;
    n < N ;
    n ++ ) {
      for ( int r = 0 ;
      r < 2 ;
      r ++ ) {
        for ( int c = 0 ;
        c < 2 ;
        c ++ ) {
          tiles [ n ] [ r ] [ c ] = in . nextInt ( ) ;
        }
      }
    }
    boolean diagTile = false ;
    for ( int [ ] [ ] tile : tiles ) {
      if ( tile [ 0 ] [ 1 ] == tile [ 1 ] [ 0 ] ) {
        diagTile = true ;
        break ;
      }
    }
    boolean nonDiagTile = false ;
    for ( int [ ] [ ] tile1 : tiles ) {
      for ( int [ ] [ ] tile2 : tiles ) {
        boolean ok = true ;
        for ( int r = 0 ;
        r < 2 ;
        r ++ ) {
          for ( int c = 0 ;
          c < 2 ;
          c ++ ) {
            if ( tile1 [ r ] [ c ] != tile2 [ c ] [ r ] ) {
              ok = false ;
            }
          }
        }
        if ( ok ) {
          nonDiagTile = true ;
        }
      }
    }
    boolean possible ;
    if ( M % 2 == 1 ) {
      possible = false ;
    }
    else if ( M == 2 ) {
      possible = diagTile ;
    }
    else {
      possible = diagTile && nonDiagTile ;
    }
    System . out . println ( possible ? "YES" : "NO" ) ;
  }
}

public static void main ( String [ ] args ) { Scanner in = new Scanner ( System . in ) ; int T = in . nextInt ( ) ; for ( int t = 0 ; t < T ; t ++ ) { int N = in . nextInt ( ) ; int M = in . nextInt ( ) ; int [ ] [ ] [ ] tiles = new int [ N ] [ 2 ] [ 2 ] ; for ( int n = 0 ; n < N ; n ++ ) { for ( int r = 0 ; r < 2 ; r ++ ) { for ( int c = 0 ; c < 2 ; c ++ ) { tiles [ n ] [ r ] [ c ] = in . nextInt ( ) ; } } } boolean diagTile = false ; for ( int [ ] [ ] tile : tiles ) { if ( tile [ 0 ] [ 1 ] == tile [ 1 ] [ 0 ] ) { diagTile = true ; break ; } } boolean nonDiagTile = false ; for ( int [ ] [ ] tile1 : tiles ) { for ( int [ ] [ ] tile2 : tiles ) { boolean ok = true ; for ( int r = 0 ; r < 2 ; r ++ ) { for ( int c = 0 ; c < 2 ; c ++ ) { if ( tile1 [ r ] [ c ] != tile2 [ c ] [ r ] ) { ok = false ; } } } if ( ok ) { nonDiagTile = true ; } } } boolean possible ; if ( M % 2 == 1 ) { possible = false ; } else if ( M == 2 ) { possible = diagTile ; } else { possible = diagTile && nonDiagTile ; } System . out . println ( possible ? " YES " : " NO " ) ; } }
(method_declaration (modifiers) type: (void_type) name: (identifier) parameters: (formal_parameters (formal_parameter type: (array_type element: (type_identifier) dimensions: (dimensions)) name: (identifier))) body: (block (local_variable_declaration type: (type_identifier) declarator: (variable_declarator name: (identifier) value: (object_creation_expression type: (type_identifier) arguments: (argument_list (field_access object: (identifier) field: (identifier)))))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) condition: (binary_expression left: (identifier) right: (identifier)) update: (update_expression (identifier)) body: (block (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) (local_variable_declaration type: (array_type element: (integral_type) dimensions: (dimensions)) declarator: (variable_declarator name: (identifier) value: (array_creation_expression type: (integral_type) dimensions: (dimensions_expr (identifier)) dimensions: (dimensions_expr (decimal_integer_literal)) dimensions: (dimensions_expr (decimal_integer_literal))))) (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) condition: (binary_expression left: (identifier) right: (identifier)) update: (update_expression (identifier)) body: (block (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) condition: (binary_expression left: (identifier) right: (decimal_integer_literal)) update: (update_expression (identifier)) body: (block (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) condition: (binary_expression left: (identifier) right: (decimal_integer_literal)) update: (update_expression (identifier)) body: (block (expression_statement (assignment_expression left: (array_access array: (array_access array: (array_access array: (identifier) index: (identifier)) index: (identifier)) index: (identifier)) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))))))))) (local_variable_declaration type: (boolean_type) declarator: (variable_declarator name: (identifier) value: (false))) (enhanced_for_statement type: (array_type element: (integral_type) dimensions: (dimensions)) name: (identifier) value: (identifier) body: (block (if_statement condition: (parenthesized_expression (binary_expression left: (array_access array: (array_access array: (identifier) index: (decimal_integer_literal)) index: (decimal_integer_literal)) right: (array_access array: (array_access array: (identifier) index: (decimal_integer_literal)) index: (decimal_integer_literal)))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (true))) (break_statement))))) (local_variable_declaration type: (boolean_type) declarator: (variable_declarator name: (identifier) value: (false))) (enhanced_for_statement type: (array_type element: (integral_type) dimensions: (dimensions)) name: (identifier) value: (identifier) body: (block (enhanced_for_statement type: (array_type element: (integral_type) dimensions: (dimensions)) name: (identifier) value: (identifier) body: (block (local_variable_declaration type: (boolean_type) declarator: (variable_declarator name: (identifier) value: (true))) (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) condition: (binary_expression left: (identifier) right: (decimal_integer_literal)) update: (update_expression (identifier)) body: (block (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) condition: (binary_expression left: (identifier) right: (decimal_integer_literal)) update: (update_expression (identifier)) body: (block (if_statement condition: (parenthesized_expression (binary_expression left: (array_access array: (array_access array: (identifier) index: (identifier)) index: (identifier)) right: (array_access array: (array_access array: (identifier) index: (identifier)) index: (identifier)))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (false))))))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (true))))))))) (local_variable_declaration type: (boolean_type) declarator: (variable_declarator name: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (decimal_integer_literal)) right: (decimal_integer_literal))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (decimal_integer_literal))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (block (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (method_invocation object: (field_access object: (identifier) field: (identifier)) name: (identifier) arguments: (argument_list (ternary_expression condition: (identifier) consequence: (string_literal) alternative: (string_literal)))))))))