public static void main ( String [ ] args ) {
  Scanner scanner = new Scanner ( System . in ) ;
  int n = scanner . nextInt ( ) ;
  int d = scanner . nextInt ( ) ;
  Map < String , List < Integer >> messagesMap = new HashMap < > ( ) ;
  Map < String , String > invertedParticipantsMap = new HashMap < > ( ) ;
  Set < String > friends = new HashSet < > ( ) ;
  for ( int i = 0 ;
  i < n ;
  i ++ ) {
    String a = scanner . next ( ) ;
    String b = scanner . next ( ) ;
    int t = scanner . nextInt ( ) ;
    messagesMap . putIfAbsent ( a + " " + b , new ArrayList < > ( ) ) ;
    messagesMap . get ( a + " " + b ) . add ( t ) ;
    invertedParticipantsMap . put ( b + " " + a , a + " " + b ) ;
    if ( i > 0 && messagesMap . containsKey ( invertedParticipantsMap . get ( a + " " + b ) ) ) {
      for ( Integer previousT : messagesMap . get ( invertedParticipantsMap . get ( a + " " + b ) ) ) {
        if ( t - previousT <= d && t - previousT > 0 ) {
          if ( ! friends . contains ( a + " " + b ) && ! friends . contains ( b + " " + a ) ) {
            friends . add ( a + " " + b ) ;
          }
          break ;
        }
      }
    }
  }
  System . out . println ( friends . size ( ) ) ;
  friends . forEach ( f -> System . out . println ( f ) ) ;
}

public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; int n = scanner . nextInt ( ) ; int d = scanner . nextInt ( ) ; Map < String , List < Integer > > messagesMap = new HashMap < > ( ) ; Map < String , String > invertedParticipantsMap = new HashMap < > ( ) ; Set < String > friends = new HashSet < > ( ) ; for ( int i = 0 ; i < n ; i ++ ) { String a = scanner . next ( ) ; String b = scanner . next ( ) ; int t = scanner . nextInt ( ) ; messagesMap . putIfAbsent ( a + " ▁ " + b , new ArrayList < > ( ) ) ; messagesMap . get ( a + " ▁ " + b ) . add ( t ) ; invertedParticipantsMap . put ( b + " ▁ " + a , a + " ▁ " + b ) ; if ( i > 0 && messagesMap . containsKey ( invertedParticipantsMap . get ( a + " ▁ " + b ) ) ) { for ( Integer previousT : messagesMap . get ( invertedParticipantsMap . get ( a + " ▁ " + b ) ) ) { if ( t - previousT <= d && t - previousT > 0 ) { if ( ! friends . contains ( a + " ▁ " + b ) && ! friends . contains ( b + " ▁ " + a ) ) { friends . add ( a + " ▁ " + b ) ; } break ; } } } } System . out . println ( friends . size ( ) ) ; friends . forEach ( f -> System . out . println ( f ) ) ; }
(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)))) (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: (generic_type (type_identifier) (type_arguments (type_identifier) (generic_type (type_identifier) (type_arguments (type_identifier))))) declarator: (variable_declarator name: (identifier) value: (object_creation_expression type: (generic_type (type_identifier) (type_arguments)) arguments: (argument_list)))) (local_variable_declaration type: (generic_type (type_identifier) (type_arguments (type_identifier) (type_identifier))) declarator: (variable_declarator name: (identifier) value: (object_creation_expression type: (generic_type (type_identifier) (type_arguments)) arguments: (argument_list)))) (local_variable_declaration type: (generic_type (type_identifier) (type_arguments (type_identifier))) declarator: (variable_declarator name: (identifier) value: (object_creation_expression type: (generic_type (type_identifier) (type_arguments)) 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: (type_identifier) declarator: (variable_declarator name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) (local_variable_declaration type: (type_identifier) 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)))) (expression_statement (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier)) (object_creation_expression type: (generic_type (type_identifier) (type_arguments)) arguments: (argument_list))))) (expression_statement (method_invocation object: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier)))) name: (identifier) arguments: (argument_list (identifier)))) (expression_statement (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier)) (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (decimal_integer_literal)) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier)))))))) consequence: (block (enhanced_for_statement type: (type_identifier) name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier)))))) body: (block (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (decimal_integer_literal)))) consequence: (block (if_statement condition: (parenthesized_expression (binary_expression left: (unary_expression operand: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier))))) right: (unary_expression operand: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier))))))) consequence: (block (expression_statement (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (string_literal)) right: (identifier))))))) (break_statement))))))))) (expression_statement (method_invocation object: (field_access object: (identifier) field: (identifier)) name: (identifier) arguments: (argument_list (method_invocation object: (identifier) name: (identifier) arguments: (argument_list))))) (expression_statement (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (lambda_expression parameters: (identifier) body: (method_invocation object: (field_access object: (identifier) field: (identifier)) name: (identifier) arguments: (argument_list (identifier)))))))))