public static void main ( String [ ] args ) {
  Scanner sc = new Scanner ( System . in ) ;
  int numCases = sc . nextInt ( ) ;
  for ( int caseNum = 1 ;
  caseNum <= numCases ;
  caseNum ++ ) {
    int N = sc . nextInt ( ) ;
    int K = sc . nextInt ( ) ;
    int [ ] sums = new int [ N - K + 1 ] ;
    for ( int i = 0 ;
    i < N - K + 1 ;
    i ++ ) {
      sums [ i ] = sc . nextInt ( ) ;
    }
    int [ ] maxDiff = new int [ K ] ;
    int [ ] minDiff = new int [ K ] ;
    for ( int i = 0 ;
    i < K ;
    i ++ ) {
      int totalDiff = 0 ;
      for ( int j = i ;
      j < N - K ;
      j += K ) {
        totalDiff += sums [ j + 1 ] - sums [ j ] ;
        maxDiff [ i ] = Math . max ( maxDiff [ i ] , totalDiff ) ;
        minDiff [ i ] = Math . min ( minDiff [ i ] , totalDiff ) ;
      }
    }
    long min = 0 ;
    long max = Integer . MAX_VALUE ;
    while ( min < max ) {
      long mid = ( min + max ) / 2 ;
      boolean possible = true ;
      long minSum = 0 , maxSum = 0 ;
      for ( int i = 0 ;
      i < K ;
      i ++ ) {
        if ( maxDiff [ i ] - minDiff [ i ] > mid ) {
          possible = false ;
          break ;
        }
        long minValue = - minDiff [ i ] , maxValue = mid - maxDiff [ i ] ;
        minSum += minValue ;
        maxSum += maxValue ;
      }
      long target = ( ( sums [ 0 ] - minSum ) % K + K ) % K + minSum ;
      if ( possible && target <= maxSum ) {
        max = mid ;
      }
      else {
        min = mid + 1 ;
      }
    }
    System . out . println ( "Case #" + caseNum + ": " + min ) ;
  }
}

public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; int numCases = sc . nextInt ( ) ; for ( int caseNum = 1 ; caseNum <= numCases ; caseNum ++ ) { int N = sc . nextInt ( ) ; int K = sc . nextInt ( ) ; int [ ] sums = new int [ N - K + 1 ] ; for ( int i = 0 ; i < N - K + 1 ; i ++ ) { sums [ i ] = sc . nextInt ( ) ; } int [ ] maxDiff = new int [ K ] ; int [ ] minDiff = new int [ K ] ; for ( int i = 0 ; i < K ; i ++ ) { int totalDiff = 0 ; for ( int j = i ; j < N - K ; j += K ) { totalDiff += sums [ j + 1 ] - sums [ j ] ; maxDiff [ i ] = Math . max ( maxDiff [ i ] , totalDiff ) ; minDiff [ i ] = Math . min ( minDiff [ i ] , totalDiff ) ; } } long min = 0 ; long max = Integer . MAX_VALUE ; while ( min < max ) { long mid = ( min + max ) / 2 ; boolean possible = true ; long minSum = 0 , maxSum = 0 ; for ( int i = 0 ; i < K ; i ++ ) { if ( maxDiff [ i ] - minDiff [ i ] > mid ) { possible = false ; break ; } long minValue = - minDiff [ i ] , maxValue = mid - maxDiff [ i ] ; minSum += minValue ; maxSum += maxValue ; } long target = ( ( sums [ 0 ] - minSum ) % K + K ) % K + minSum ; if ( possible && target <= maxSum ) { max = mid ; } else { min = mid + 1 ; } } System . out . println ( " Case ▁ # " + caseNum + " : ▁ " + min ) ; } }
(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 (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (decimal_integer_literal))) update: (update_expression (identifier)) body: (block (expression_statement (assignment_expression left: (array_access array: (identifier) index: (identifier)) right: (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))))) (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))))) (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: (decimal_integer_literal))) (for_statement init: (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (identifier))) condition: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) update: (assignment_expression left: (identifier) right: (identifier)) body: (block (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (array_access array: (identifier) index: (binary_expression left: (identifier) right: (decimal_integer_literal))) right: (array_access array: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (array_access array: (identifier) index: (identifier)) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (array_access array: (identifier) index: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (array_access array: (identifier) index: (identifier)) right: (method_invocation object: (identifier) name: (identifier) arguments: (argument_list (array_access array: (identifier) index: (identifier)) (identifier))))))))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (field_access object: (identifier) field: (identifier)))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) body: (block (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (decimal_integer_literal)))) (local_variable_declaration type: (boolean_type) declarator: (variable_declarator name: (identifier) value: (true))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal)) declarator: (variable_declarator name: (identifier) value: (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 (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (array_access array: (identifier) index: (identifier)) right: (array_access array: (identifier) index: (identifier))) right: (identifier))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (false))) (break_statement))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (unary_expression operand: (array_access array: (identifier) index: (identifier)))) declarator: (variable_declarator name: (identifier) value: (binary_expression left: (identifier) right: (array_access array: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (array_access array: (identifier) index: (decimal_integer_literal)) right: (identifier))) right: (identifier)) right: (identifier))) right: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (block (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (decimal_integer_literal)))))))) (expression_statement (method_invocation object: (field_access object: (identifier) field: (identifier)) name: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (string_literal) right: (identifier)) right: (string_literal)) right: (identifier)))))))))