



import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow


if is_torch_available():
	import torch

	from transformers import XLMRobertaModel







@require_sentencepiece
@require_tokenizers
@require_torch
class 				_a				(   unittest.TestCase					):

			@slow
			def      __snake_case       (self					)       ->   List[Any]:
						UpperCAmelCase_:		Dict							      =     XLMRobertaModel.from_pretrained("""xlm-roberta-base"""					)
						UpperCAmelCase_:		Dict							      =     torch.tensor([[0, 581, 10269, 83, 99942, 136, 60742, 23, 70, 80583, 18276, 2]]					)
						# The dog is cute and lives in the garden house

						UpperCAmelCase_:		Dict							      =     torch.Size((1, 12, 768)					)  # batch_size, sequence_length, embedding_vector_dim
						UpperCAmelCase_:		List[str]							      =     torch.tensor(
						    [[-0.0_1_0_1, 0.1_2_1_8, -0.0_8_0_3, 0.0_8_0_1, 0.1_3_2_7, 0.0_7_7_6, -0.1_2_1_5, 0.2_3_8_3, 0.3_3_3_8, 0.3_1_0_6, 0.0_3_0_0, 0.0_2_5_2]]					)
						#  xlmr = torch.hub.load('pytorch/fairseq', 'xlmr.base')
						#  xlmr.eval()
						#  expected_output_values_last_dim = xlmr.extract_features(input_ids[0])[:, :, -1]
						with torch.no_grad():
									UpperCAmelCase_:		List[Any]							      =     model(SCREAMING_SNAKE_CASE_					)["""last_hidden_state"""].detach()
						self.assertEqual(output.shape,   SCREAMING_SNAKE_CASE_					)
						# compare the actual values for a slice of last dim
						self.assertTrue(torch.allclose(output[:, :, -1],   SCREAMING_SNAKE_CASE_,   atol=1E-3					)					)

			@slow
			def      __snake_case       (self					)       ->   Dict:
						UpperCAmelCase_:		Dict							      =     XLMRobertaModel.from_pretrained("""xlm-roberta-large"""					)
						UpperCAmelCase_:		Union[str, Any]							      =     torch.tensor([[0, 581, 10269, 83, 99942, 136, 60742, 23, 70, 80583, 18276, 2]]					)
						# The dog is cute and lives in the garden house

						UpperCAmelCase_:		Tuple							      =     torch.Size((1, 12, 1024)					)  # batch_size, sequence_length, embedding_vector_dim
						UpperCAmelCase_:		Optional[Any]							      =     torch.tensor(
						    [[-0.0_6_9_9, -0.0_3_1_8, 0.0_7_0_5, -0.1_2_4_1, 0.0_9_9_9, -0.0_5_2_0, 0.1_0_0_4, -0.1_8_3_8, -0.4_7_0_4, 0.1_4_3_7, 0.0_8_2_1, 0.0_1_2_6]]					)
						#  xlmr = torch.hub.load('pytorch/fairseq', 'xlmr.large')
						#  xlmr.eval()
						#  expected_output_values_last_dim = xlmr.extract_features(input_ids[0])[:, :, -1]
						with torch.no_grad():
									UpperCAmelCase_:		Tuple							      =     model(SCREAMING_SNAKE_CASE_					)["""last_hidden_state"""].detach()
						self.assertEqual(output.shape,   SCREAMING_SNAKE_CASE_					)
						# compare the actual values for a slice of last dim
						self.assertTrue(torch.allclose(output[:, :, -1],   SCREAMING_SNAKE_CASE_,   atol=1E-3					)					)











def  lowerCAmelCase_	(lowerCAmelCase__:		int  ):





			"""simple docstring"""


			if n == 1 or not isinstance(lowerCAmelCase__		,						lowerCAmelCase__  ):
						return 0
			elif n == 2:
						return 1
			else:
						UpperCAmelCase_:		Optional[int]							      =     [0, 1]
						for i in range(2		,						n + 1  ):
									sequence.append(sequence[i - 1] + sequence[i - 2]  )

						return sequence[n]







def  lowerCAmelCase_	(lowerCAmelCase__:		int  ):





			"""simple docstring"""


			UpperCAmelCase_:		str							      =     0
			UpperCAmelCase_:		str							      =     2

			while digits < n:
						index += 1
						UpperCAmelCase_:		Union[str, Any]							      =     len(str(fibonacci(lowerCAmelCase__  )  )  )

			return index







def  lowerCAmelCase_	(lowerCAmelCase__:		int = 1_0_0_0  ):





			"""simple docstring"""


			return fibonacci_digits_index(lowerCAmelCase__  )


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






