


"""simple docstring"""






import warnings
from typing import List, Optional, Union

from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType


class     __lowerCamelCase  (					a__				):

     '''simple docstring'''
     A_       :	Tuple    =		['image_processor', 'tokenizer']
     A_       :	List[str]    =		'LayoutLMv3ImageProcessor'
     A_       :	Tuple    =		('LayoutLMv3Tokenizer', 'LayoutLMv3TokenizerFast')


     def __init__(      self    ,				__UpperCAmelCase=None    ,				__UpperCAmelCase=None    ,				**__UpperCAmelCase							)       ->							List[Any]:
          _a    	=				None
          if "feature_extractor" in kwargs:
               warnings.warn(
                   '''The `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor`'''
                   ''' instead.'''    ,				__UpperCAmelCase    ,				)
               _a    	=				kwargs.pop('''feature_extractor'''							)

          _a    	=				image_processor if image_processor is not None else feature_extractor
          if image_processor is None:
               raise ValueError('''You need to specify an `image_processor`.'''							)
          if tokenizer is None:
               raise ValueError('''You need to specify a `tokenizer`.'''							)

          super().__init__(__UpperCAmelCase    ,				__UpperCAmelCase							)


     def __call__(      self    ,				__UpperCAmelCase    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = True    ,				__UpperCAmelCase = False    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = 0    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = None    ,				__UpperCAmelCase = False    ,				__UpperCAmelCase = False    ,				__UpperCAmelCase = False    ,				__UpperCAmelCase = False    ,				__UpperCAmelCase = True    ,				__UpperCAmelCase = None    ,				**__UpperCAmelCase    ,				)       ->							BatchEncoding:
          # verify input
          if self.image_processor.apply_ocr and (boxes is not None):
               raise ValueError(
                   '''You cannot provide bounding boxes if you initialized the image processor with apply_ocr set to True.'''							)

          if self.image_processor.apply_ocr and (word_labels is not None):
               raise ValueError(
                   '''You cannot provide word labels if you initialized the image processor with apply_ocr set to True.'''							)

          # first, apply the image processor
          _a    	=				self.image_processor(images=__UpperCAmelCase    ,				return_tensors=__UpperCAmelCase							)

          # second, apply the tokenizer
          if text is not None and self.image_processor.apply_ocr and text_pair is None:
               if isinstance(__UpperCAmelCase    ,				__UpperCAmelCase							):
                    _a    	=				[text]  # add batch dimension (as the image processor always adds a batch dimension)
               _a    	=				features['''words''']

          _a    	=				self.tokenizer(
              text=text if text is not None else features['''words''']    ,				text_pair=text_pair if text_pair is not None else None    ,				boxes=boxes if boxes is not None else features['''boxes''']    ,				word_labels=__UpperCAmelCase    ,				add_special_tokens=__UpperCAmelCase    ,				padding=__UpperCAmelCase    ,				truncation=__UpperCAmelCase    ,				max_length=__UpperCAmelCase    ,				stride=__UpperCAmelCase    ,				pad_to_multiple_of=__UpperCAmelCase    ,				return_token_type_ids=__UpperCAmelCase    ,				return_attention_mask=__UpperCAmelCase    ,				return_overflowing_tokens=__UpperCAmelCase    ,				return_special_tokens_mask=__UpperCAmelCase    ,				return_offsets_mapping=__UpperCAmelCase    ,				return_length=__UpperCAmelCase    ,				verbose=__UpperCAmelCase    ,				return_tensors=__UpperCAmelCase    ,				**__UpperCAmelCase    ,				)

          # add pixel values
          _a    	=				features.pop('''pixel_values'''							)
          if return_overflowing_tokens is True:
               _a    	=				self.get_overflowing_images(__UpperCAmelCase    ,				encoded_inputs['''overflow_to_sample_mapping''']							)
          _a    	=				images

          return encoded_inputs


     def 							_UpperCAmelCase      (      self    ,				__UpperCAmelCase    ,				__UpperCAmelCase							)       ->							Dict:
          # in case there's an overflow, ensure each `input_ids` sample is mapped to its corresponding image
          _a    	=				[]
          for sample_idx in overflow_to_sample_mapping:
               images_with_overflow.append(images[sample_idx]							)

          if len(__UpperCAmelCase							) != len(__UpperCAmelCase							):
               raise ValueError(
                   '''Expected length of images to be the same as the length of `overflow_to_sample_mapping`, but got'''
                   F' {len(__UpperCAmelCase							)} and {len(__UpperCAmelCase							)}'							)

          return images_with_overflow


     def 							_UpperCAmelCase      (      self    ,				*__UpperCAmelCase    ,				**__UpperCAmelCase							)       ->							Tuple:
          return self.tokenizer.batch_decode(*__UpperCAmelCase    ,				**__UpperCAmelCase							)


     def 							_UpperCAmelCase      (      self    ,				*__UpperCAmelCase    ,				**__UpperCAmelCase							)       ->							int:
          return self.tokenizer.decode(*__UpperCAmelCase    ,				**__UpperCAmelCase							)


     @property
     def 							_UpperCAmelCase      (      self							)       ->							int:
          return ["input_ids", "bbox", "attention_mask", "pixel_values"]


     @property
     def 							_UpperCAmelCase      (      self							)       ->							List[str]:
          warnings.warn(
              '''`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead.'''    ,				__UpperCAmelCase    ,				)
          return self.image_processor_class





     @property
     def 							_UpperCAmelCase      (      self							)       ->							int:
          warnings.warn(
              '''`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.'''    ,				__UpperCAmelCase    ,				)
          return self.image_processor



"""simple docstring"""






def       A_   (   _lowerCAmelCase     :					int = 10_00       ):






     """simple docstring"""

     _a	,      _a    	=				1, 1
     _a    	=				2
     while True:
          _a    	=				0
          _a    	=				fa + fa
          _a	,      _a    	=				fa, f
          index += 1
          for _ in str(_lowerCAmelCase       ):
               i += 1
          if i == n:
               break
     return index


if __name__ == "__main__":
   print(solution(int(str(input()).strip())))