public static void main ( String [ ] args ) {
  Scanner scanner = new Scanner ( new BufferedInputStream ( System . in ) ) ;
  int n = scanner . nextInt ( ) ;
  int m = scanner . nextInt ( ) ;
  Map < Integer , PriorityQueue < Integer >> map = new HashMap < > ( ) ;
  for ( int i = 0 ;
  i < n ;
  i ++ ) {
    int party = scanner . nextInt ( ) ;
    int money = scanner . nextInt ( ) ;
    map . putIfAbsent ( party , new PriorityQueue < > ( ) ) ;
    map . get ( party ) . add ( money ) ;
  }
  long res = Long . MAX_VALUE ;
  PriorityQueue < Integer > priorityQueue = map . get ( 1 ) ;
  PriorityQueue < Integer > ttt ;
  for ( int k = 1 ;
  k <= n ;
  k ++ ) {
    ttt = new PriorityQueue < > ( ) ;
    long cur = ( priorityQueue == null ? 0 : priorityQueue . size ( ) ) ;
    if ( cur <= k ) {
      long money = 0 ;
      for ( Map . Entry < Integer , PriorityQueue < Integer >> integerPriorityQueueEntry : map . entrySet ( ) ) {
        int key = integerPriorityQueueEntry . getKey ( ) ;
        PriorityQueue < Integer > queue = new PriorityQueue < > ( integerPriorityQueueEntry . getValue ( ) ) ;
        if ( key == 1 || queue . isEmpty ( ) ) {
          continue ;
        }
        while ( queue . size ( ) >= k ) {
          money += queue . poll ( ) ;
          cur ++ ;
        }
        if ( ! queue . isEmpty ( ) ) {
          ttt . addAll ( queue ) ;
        }
        if ( cur > k ) {
          break ;
        }
      }
      if ( cur < k ) {
        while ( cur < k && ! ttt . isEmpty ( ) ) {
          money += ttt . poll ( ) ;
          cur ++ ;
        }
      }
      if ( cur == k ) {
        res = Math . min ( res , money ) ;
      }
    }
  }
  System . out . println ( res ) ;
}

public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( new BufferedInputStream ( System . in ) ) ; int n = scanner . nextInt ( ) ; int m = scanner . nextInt ( ) ; Map < Integer , PriorityQueue < Integer > > map = new HashMap < > ( ) ; for ( int i = 0 ; i < n ; i ++ ) { int party = scanner . nextInt ( ) ; int money = scanner . nextInt ( ) ; map . putIfAbsent ( party , new PriorityQueue < > ( ) ) ; map . get ( party ) . add ( money ) ; } long res = Long . MAX_VALUE ; PriorityQueue < Integer > priorityQueue = map . get ( 1 ) ; PriorityQueue < Integer > ttt ; for ( int k = 1 ; k <= n ; k ++ ) { ttt = new PriorityQueue < > ( ) ; long cur = ( priorityQueue == null ? 0 : priorityQueue . size ( ) ) ; if ( cur <= k ) { long money = 0 ; for ( Map . Entry < Integer , PriorityQueue < Integer > > integerPriorityQueueEntry : map . entrySet ( ) ) { int key = integerPriorityQueueEntry . getKey ( ) ; PriorityQueue < Integer > queue = new PriorityQueue < > ( integerPriorityQueueEntry . getValue ( ) ) ; if ( key == 1 || queue . isEmpty ( ) ) { continue ; } while ( queue . size ( ) >= k ) { money += queue . poll ( ) ; cur ++ ; } if ( ! queue . isEmpty ( ) ) { ttt . addAll ( queue ) ; } if ( cur > k ) { break ; } } if ( cur < k ) { while ( cur < k && ! ttt . isEmpty ( ) ) { money += ttt . poll ( ) ; cur ++ ; } } if ( cur == k ) { res = Math . min ( res , money ) ; } } } System . out . println ( res ) ; }
(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 (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)))) (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)))) (expression_statement (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (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 (identifier))) name: (identifier) arguments: (argument_list (identifier)))))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (field_access object: (identifier) field: (identifier)))) (local_variable_declaration type: (generic_type (type_identifier) (type_arguments (type_identifier))) declarator: (variable_declarator name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (decimal_integer_literal))))) (local_variable_declaration type: (generic_type (type_identifier) (type_arguments (type_identifier))) declarator: (variable_declarator name: (identifier))) (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 (expression_statement (assignment_expression left: (identifier) right: (object_creation_expression type: (generic_type (type_identifier) (type_arguments)) arguments: (argument_list)))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (parenthesized_expression (ternary_expression condition: (binary_expression left: (identifier) right: (null_literal)) consequence: (decimal_integer_literal) alternative: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (block (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) (enhanced_for_statement type: (generic_type (scoped_type_identifier (type_identifier) (type_identifier)) (type_arguments (type_identifier) (generic_type (type_identifier) (type_arguments (type_identifier))))) name: (identifier) value: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)) 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: (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 (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))))) (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)))) consequence: (block (continue_statement))) (while_statement condition: (parenthesized_expression (binary_expression left: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)) right: (identifier))) body: (block (expression_statement (assignment_expression left: (identifier) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) (expression_statement (update_expression (identifier))))) (if_statement condition: (parenthesized_expression (unary_expression operand: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) consequence: (block (expression_statement (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (block (break_statement))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (block (while_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (unary_expression operand: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list))))) body: (block (expression_statement (assignment_expression left: (identifier) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list)))) (expression_statement (update_expression (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (identifier) (identifier))))))))))) (expression_statement (method_invocation object: (field_access object: (identifier) field: (identifier)) name: (identifier) arguments: (argument_list (identifier))))))