public static void main ( String [ ] args ) {
  Scanner scanner = new Scanner ( System . in ) ;
  int n = scanner . nextInt ( ) ;
  Integer [ ] range = new Integer [ n ] ;
  for ( int i = 0 ;
  i < n ;
  i ++ ) range [ i ] = scanner . nextInt ( ) ;
  int len = 1 ;
  int maxLen = 1 ;
  int max = 0 ;
  int min = 0 ;
  int latestMin = 0 ;
  int latestMax = 0 ;
  for ( int i = 1 ;
  i < n ;
  i ++ ) {
    int change = i ;
    int newmin = min ;
    int newmax = max ;
    if ( range [ max ] < range [ i ] ) {
      latestMax = i ;
      if ( max == min ) {
        newmax = i ;
      }
      else {
        newmax = i ;
        change = latestMin ;
        newmin = change + 1 ;
        latestMin ++ ;
        len = - 1 ;
      }
    }
    else if ( range [ max ] . equals ( range [ i ] ) ) {
      latestMax = i ;
    }
    if ( range [ min ] > range [ i ] ) {
      latestMin = i ;
      if ( max == min ) {
        newmin = i ;
      }
      else {
        newmin = i ;
        change = latestMax ;
        newmax = change + 1 ;
        latestMax ++ ;
        len = - 1 ;
      }
    }
    else if ( range [ min ] . equals ( range [ i ] ) ) {
      latestMin = i ;
    }
    i = change ;
    len ++ ;
    min = newmin ;
    max = newmax ;
    if ( maxLen < len ) maxLen = len ;
  }
  System . out . println ( maxLen ) ;
}

public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; int n = scanner . nextInt ( ) ; Integer [ ] range = new Integer [ n ] ; for ( int i = 0 ; i < n ; i ++ ) range [ i ] = scanner . nextInt ( ) ; int len = 1 ; int maxLen = 1 ; int max = 0 ; int min = 0 ; int latestMin = 0 ; int latestMax = 0 ; for ( int i = 1 ; i < n ; i ++ ) { int change = i ; int newmin = min ; int newmax = max ; if ( range [ max ] < range [ i ] ) { latestMax = i ; if ( max == min ) { newmax = i ; } else { newmax = i ; change = latestMin ; newmin = change + 1 ; latestMin ++ ; len = - 1 ; } } else if ( range [ max ] . equals ( range [ i ] ) ) { latestMax = i ; } if ( range [ min ] > range [ i ] ) { latestMin = i ; if ( max == min ) { newmin = i ; } else { newmin = i ; change = latestMax ; newmax = change + 1 ; latestMax ++ ; len = - 1 ; } } else if ( range [ min ] . equals ( range [ i ] ) ) { latestMin = i ; } i = change ; len ++ ; min = newmin ; max = newmax ; if ( maxLen < len ) maxLen = len ; } System . out . println ( maxLen ) ; }
(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: (array_type element: (type_identifier) dimensions: (dimensions)) declarator: (variable_declarator name: (identifier) value: (array_creation_expression type: (type_identifier) 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: (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: (integral_type) declarator: (variable_declarator name: (identifier) value: (decimal_integer_literal))) (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: (decimal_integer_literal))) (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: (decimal_integer_literal))) (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: (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: (identifier))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (identifier))) (local_variable_declaration type: (integral_type) declarator: (variable_declarator name: (identifier) value: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (array_access array: (identifier) index: (identifier)) right: (array_access array: (identifier) index: (identifier)))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (decimal_integer_literal)))) (expression_statement (update_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression operand: (decimal_integer_literal))))))) alternative: (if_statement condition: (parenthesized_expression (method_invocation object: (array_access array: (identifier) index: (identifier)) name: (identifier) arguments: (argument_list (array_access array: (identifier) index: (identifier))))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (array_access array: (identifier) index: (identifier)) right: (array_access array: (identifier) index: (identifier)))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (decimal_integer_literal)))) (expression_statement (update_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression operand: (decimal_integer_literal))))))) alternative: (if_statement condition: (parenthesized_expression (method_invocation object: (array_access array: (identifier) index: (identifier)) name: (identifier) arguments: (argument_list (array_access array: (identifier) index: (identifier))))) consequence: (block (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (update_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (method_invocation object: (field_access object: (identifier) field: (identifier)) name: (identifier) arguments: (argument_list (identifier))))))