



'''simple docstring'''





import math
from itertools import permutations



def     UpperCAmelCase     (    a_		)   ->       bool:



   """simple docstring"""






   if 1 < number < 4:
      # 2 and 3 are primes
      return True
   elif number < 2 or number % 2 == 0 or number % 3 == 0:
      # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
      return False

   # All primes number are in format of 6k +/- 1
   for i in range(5      ,		int(math.sqrt(a_		) + 1		)      ,		6		):
      if number % i == 0 or number % (i + 2) == 0:
         return False
   return True



def     UpperCAmelCase     (    a_      ,		a_		)   ->       bool:



   """simple docstring"""






   A_						,  A_  :		int						=					0, len(a_		) - 1
   while left <= right:
      A_  :		str						=					(left + right) // 2
      if prime_list[middle] == target:
         return True
      elif prime_list[middle] < target:
         A_  :		int						=					middle + 1
      else:
         A_  :		List[Any]						=					middle - 1

   return False



def     UpperCAmelCase     (    )   ->       str:



   """simple docstring"""






   A_  :		Union[str, Any]						=					[n for n in range(1_0_0_1      ,		1_0_0_0_0      ,		2		) if is_prime(a_		)]
   A_  :		int						=					[]

   for number in prime_list:
      A_  :		Dict						=					[]

      for prime_member in permutations(list(str(a_		)		)		):
         A_  :		int						=					int("""""".join(a_		)		)

         if prime % 2 == 0:
            continue

         if search(a_      ,		a_		):
            tmp_numbers.append(a_		)

      tmp_numbers.sort()
      if len(a_		) >= 3:
         candidates.append(a_		)

   A_  :		Optional[int]						=					[]
   for candidate in candidates:
      A_  :		Tuple						=					len(a_		)
      A_  :		Any						=					False

      for i in range(a_		):
         for j in range(i + 1      ,		a_		):
            for k in range(j + 1      ,		a_		):
               if (
                   abs(candidate[i] - candidate[j]		)
                   == abs(candidate[j] - candidate[k]		)
                   and len({candidate[i], candidate[j], candidate[k]}		) == 3
               ):
                  passed.append(
                      sorted([candidate[i], candidate[j], candidate[k]]		)		)
                  A_  :		Tuple						=					True

               if found:
                  break
            if found:
               break
         if found:
            break

   A_  :		str						=					set()
   for seq in passed:
      answer.add("""""".join([str(a_		) for i in seq]		)		)

   return max(int(a_		) for x in answer		)


if __name__ == "__main__":
  print(solution())





'''simple docstring'''





import enum
import inspect
from typing import Iterable, List, Optional, Tuple, Union


class 							_lowerCAmelCase	(  enum.Enum							):


 """simple docstring"""

 lowerCamelCase									=     '''timm'''
 lowerCamelCase									=     '''transformers'''



def     UpperCAmelCase     (    a_      ,		a_      ,		a_		)   ->       Optional[Any]:



   """simple docstring"""






   if stage_names is None:
      raise ValueError("""Stage_names must be set for transformers backbones"""		)

   if out_features is not None:
      if not isinstance(a_      ,		(list,)		):
         raise ValueError(F"out_features must be a list {type(a_		)}"		)
      if any(feat not in stage_names for feat in out_features		):
         raise ValueError(F"out_features must be a subset of stage_names: {stage_names} got {out_features}"		)

   if out_indices is not None:
      if not isinstance(a_      ,		(list, tuple)		):
         raise ValueError(F"out_indices must be a list or tuple, got {type(a_		)}"		)
      if any(idx >= len(a_		) for idx in out_indices		):
         raise ValueError("""out_indices must be valid indices for stage_names {stage_names}, got {out_indices}"""		)

   if out_features is not None and out_indices is not None:
      if len(a_		) != len(a_		):
         raise ValueError("""out_features and out_indices should have the same length if both are set"""		)
      if out_features != [stage_names[idx] for idx in out_indices]:
         raise ValueError("""out_features and out_indices should correspond to the same stages if both are set"""		)



def     UpperCAmelCase     (    a_      ,		a_      ,		a_      ,		)   ->       Dict:



   """simple docstring"""






   if out_indices is None and out_features is None:
      A_  :		Optional[Any]						=					[len(a_		) - 1]
      A_  :		Optional[int]						=					[stage_names[-1]]
   elif out_indices is None and out_features is not None:
      A_  :		Optional[Any]						=					[stage_names.index(a_		) for layer in out_features]
   elif out_features is None and out_indices is not None:
      A_  :		int						=					[stage_names[idx] for idx in out_indices]
   return out_features, out_indices



def     UpperCAmelCase     (    a_      ,		a_      ,		a_      ,		)   ->       Tuple[List[str], List[int]]:



   """simple docstring"""






   verify_out_features_out_indices(out_features=a_      ,		out_indices=a_      ,		stage_names=a_		)
   A_						,  A_  :		List[Any]						=					_align_output_features_output_indices(
       out_features=a_      ,		out_indices=a_      ,		stage_names=a_		)
   # Verify that the aligned out_features and out_indices are valid
   verify_out_features_out_indices(out_features=a_      ,		out_indices=a_      ,		stage_names=a_		)
   return output_features, output_indices


class 							_lowerCAmelCase	:


 """simple docstring"""

 lowerCamelCase									=     None







 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    None:
    if getattr(self					,    """_backbone"""					,    _lowerCamelCase  ) is None:
       raise ValueError("""self._backbone must be set before calling _init_timm_backbone"""  )

    # These will diagree with the defaults for the transformers models e.g. for resnet50
    # the transformer model has out_features = ['stem', 'stage1', 'stage2', 'stage3', 'stage4']
    # the timm model has out_features = ['act', 'layer1', 'layer2', 'layer3', 'layer4']
    A_  :		str						=					[stage["""module"""] for stage in self._backbone.feature_info.info]
    A_  :		Any						=					[stage["""num_chs"""] for stage in self._backbone.feature_info.info]
    A_  :		Tuple						=					self._backbone.feature_info.out_indices
    A_  :		str						=					self._backbone.feature_info.module_name()

    # We verify the out indices and out features are valid
    verify_out_features_out_indices(
        out_features=_lowerCamelCase					,    out_indices=_lowerCamelCase					,    stage_names=self.stage_names  )
    A_						,  A_  :		List[Any]						=					out_features, out_indices







 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    None:
    A_  :		List[Any]						=					getattr(_lowerCamelCase					,    """stage_names"""  )
    A_  :		int						=					getattr(_lowerCamelCase					,    """out_features"""					,    _lowerCamelCase  )
    A_  :		Optional[int]						=					getattr(_lowerCamelCase					,    """out_indices"""					,    _lowerCamelCase  )

    A_  :		Union[str, Any]						=					stage_names
    A_						,  A_  :		List[str]						=					get_aligned_output_features_output_indices(
        out_features=_lowerCamelCase					,    out_indices=_lowerCamelCase					,    stage_names=_lowerCamelCase  )
    # Number of channels for each stage. This is set in the transformer backbone model init
    A_  :		int						=					None







 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    None:
    A_  :		Optional[Any]						=					config

    A_  :		Optional[Any]						=					getattr(_lowerCamelCase					,    """use_timm_backbone"""					,    _lowerCamelCase  )
    A_  :		Optional[int]						=					BackboneType.TIMM if self.use_timm_backbone else BackboneType.TRANSFORMERS

    if self.backbone_type == BackboneType.TIMM:
       self._init_timm_backbone(_lowerCamelCase  )
    elif self.backbone_type == BackboneType.TRANSFORMERS:
       self._init_transformers_backbone(_lowerCamelCase  )
    else:
       raise ValueError(F"backbone_type {self.backbone_type} not supported."  )







 @property
 def       UpperCAmelCase_       (      self  )    ->    List[str]:
    return self._out_features







 @out_features.setter
 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    Any:
    A_						,  A_  :		Union[str, Any]						=					get_aligned_output_features_output_indices(
        out_features=_lowerCamelCase					,    out_indices=_lowerCamelCase					,    stage_names=self.stage_names  )







 @property
 def       UpperCAmelCase_       (      self  )    ->    Any:
    return self._out_indices







 @out_indices.setter
 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    Union[str, Any]:
    A_						,  A_  :		List[str]						=					get_aligned_output_features_output_indices(
        out_features=_lowerCamelCase					,    out_indices=_lowerCamelCase					,    stage_names=self.stage_names  )







 @property
 def       UpperCAmelCase_       (      self  )    ->    Dict:
    # the current backbones will output the number of channels for each stage
    # even if that stage is not in the out_features list.
    return {stage: self.num_features[i] for i, stage in enumerate(self.stage_names  )}







 @property
 def       UpperCAmelCase_       (      self  )    ->    Any:
    return [self.out_feature_channels[name] for name in self.out_features]







 def       UpperCAmelCase_       (      self					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    List[Any]:
    A_  :		Optional[int]						=					dict(inspect.signature(self.forward  ).parameters  )
    A_  :		str						=					{k: v for k, v in kwargs.items() if k in signature}
    return self(*_lowerCamelCase					,    **_lowerCamelCase  )







 def       UpperCAmelCase_       (      self					,    _lowerCamelCase					,    _lowerCamelCase = None					,    _lowerCamelCase = None					,    _lowerCamelCase = None					,    )    ->    List[Any]:
    raise NotImplementedError("""This method should be implemented by the derived class."""  )







 def       UpperCAmelCase_       (      self  )    ->    List[str]:
    A_  :		Optional[int]						=					super().to_dict()
    A_  :		Union[str, Any]						=					output.pop("""_out_features"""  )
    A_  :		int						=					output.pop("""_out_indices"""  )
    return output


class 							_lowerCAmelCase	:


 """simple docstring"""

 @property
 def       UpperCAmelCase_       (      self  )    ->    Union[str, Any]:
    return self._out_features







 @out_features.setter
 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    List[str]:
    A_						,  A_  :		List[str]						=					get_aligned_output_features_output_indices(
        out_features=_lowerCamelCase					,    out_indices=_lowerCamelCase					,    stage_names=self.stage_names  )







 @property
 def       UpperCAmelCase_       (      self  )    ->    List[Any]:
    return self._out_indices







 @out_indices.setter
 def       UpperCAmelCase_       (      self					,    _lowerCamelCase  )    ->    str:
    A_						,  A_  :		Union[str, Any]						=					get_aligned_output_features_output_indices(
        out_features=_lowerCamelCase					,    out_indices=_lowerCamelCase					,    stage_names=self.stage_names  )







 def       UpperCAmelCase_       (      self  )    ->    List[str]:
    A_  :		Optional[int]						=					super().to_dict()
    A_  :		Tuple						=					output.pop("""_out_features"""  )
    A_  :		Optional[Any]						=					output.pop("""_out_indices"""  )
    return output
