




'''simple docstring'''



import gc
import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel, CLIPTokenizer

from diffusers import (
    AutoencoderKL,
    DDIMScheduler,
    StableDiffusionSAGPipeline,
    UNetaDConditionModel,
)
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..pipeline_params import TEXT_TO_IMAGE_BATCH_PARAMS, TEXT_TO_IMAGE_IMAGE_PARAMS, TEXT_TO_IMAGE_PARAMS
from ..test_pipelines_common import PipelineLatentTesterMixin, PipelineTesterMixin


enable_full_determinism()





class      lowerCAmelCase (			__lowerCAmelCase					, __lowerCAmelCase					, unittest.TestCase):
       __lowercase	:   List[str]										=      StableDiffusionSAGPipeline
       __lowercase	:   Union[str, Any]										=      TEXT_TO_IMAGE_PARAMS
       __lowercase	:   Dict										=      TEXT_TO_IMAGE_BATCH_PARAMS
       __lowercase	:   Dict										=      TEXT_TO_IMAGE_IMAGE_PARAMS
       __lowercase	:   List[str]										=      TEXT_TO_IMAGE_IMAGE_PARAMS
       __lowercase	:   Optional[int]										=      False


       def    lowerCAmelCase   ( self	)   ->	Dict:



            '''simple docstring'''




            torch.manual_seed(0	)
            __snake_case            =	UNetaDConditionModel(
                block_out_channels=(32, 64)     ,	layers_per_block=2     ,	sample_size=32     ,	in_channels=4     ,	out_channels=4     ,	down_block_types=('''DownBlock2D''', '''CrossAttnDownBlock2D''')     ,	up_block_types=('''CrossAttnUpBlock2D''', '''UpBlock2D''')     ,	cross_attention_dim=32     ,	)
            __snake_case            =	DDIMScheduler(
                beta_start=0.00_085     ,	beta_end=0.012     ,	beta_schedule='''scaled_linear'''     ,	clip_sample=__SCREAMING_SNAKE_CASE     ,	set_alpha_to_one=__SCREAMING_SNAKE_CASE     ,	)
            torch.manual_seed(0	)
            __snake_case            =	AutoencoderKL(
                block_out_channels=[32, 64]     ,	in_channels=3     ,	out_channels=3     ,	down_block_types=['''DownEncoderBlock2D''', '''DownEncoderBlock2D''']     ,	up_block_types=['''UpDecoderBlock2D''', '''UpDecoderBlock2D''']     ,	latent_channels=4     ,	)
            torch.manual_seed(0	)
            __snake_case            =	CLIPTextConfig(
                bos_token_id=0     ,	eos_token_id=2     ,	hidden_size=32     ,	intermediate_size=37     ,	layer_norm_eps=1E-05     ,	num_attention_heads=4     ,	num_hidden_layers=5     ,	pad_token_id=1     ,	vocab_size=1000     ,	)
            __snake_case            =	CLIPTextModel(__SCREAMING_SNAKE_CASE	)
            __snake_case            =	CLIPTokenizer.from_pretrained('''hf-internal-testing/tiny-random-clip'''	)

            __snake_case            =	{
                '''unet''': unet,
                '''scheduler''': scheduler,
                '''vae''': vae,
                '''text_encoder''': text_encoder,
                '''tokenizer''': tokenizer,
                '''safety_checker''': None,
                '''feature_extractor''': None,
            }
            return components


       def    lowerCAmelCase   ( self     ,	__SCREAMING_SNAKE_CASE     ,	__SCREAMING_SNAKE_CASE=0	)   ->	int:



            '''simple docstring'''




            if str(__SCREAMING_SNAKE_CASE	).startswith('''mps'''	):
                 __snake_case            =	torch.manual_seed(__SCREAMING_SNAKE_CASE	)
            else:
                 __snake_case            =	torch.Generator(device=__SCREAMING_SNAKE_CASE	).manual_seed(__SCREAMING_SNAKE_CASE	)
            __snake_case            =	{
                '''prompt''': '''.''',
                '''generator''': generator,
                '''num_inference_steps''': 2,
                '''guidance_scale''': 1.0,
                '''sag_scale''': 1.0,
                '''output_type''': '''numpy''',
            }
            return inputs




       def    lowerCAmelCase   ( self	)   ->	Any:



            '''simple docstring'''




            super().test_inference_batch_single_identical(expected_max_diff=3E-3	)





@slow
@require_torch_gpu
class      lowerCAmelCase (			unittest.TestCase):


       def    lowerCAmelCase   ( self	)   ->	str:



            '''simple docstring'''




            super().tearDown()
            gc.collect()
            torch.cuda.empty_cache()


       def    lowerCAmelCase   ( self	)   ->	Optional[Any]:



            '''simple docstring'''




            __snake_case            =	StableDiffusionSAGPipeline.from_pretrained('''CompVis/stable-diffusion-v1-4'''	)
            __snake_case            =	sag_pipe.to(__SCREAMING_SNAKE_CASE	)
            sag_pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE	)

            __snake_case            =	'''.'''
            __snake_case            =	torch.manual_seed(0	)
            __snake_case            =	sag_pipe(
                [prompt]     ,	generator=__SCREAMING_SNAKE_CASE     ,	guidance_scale=7.5     ,	sag_scale=1.0     ,	num_inference_steps=20     ,	output_type='''np'''	)

            __snake_case            =	output.images

            __snake_case            =	image[0, -3:, -3:, -1]

            assert image.shape == (1, 512, 512, 3)
            __snake_case            =	np.array([0.1_568, 0.1_738, 0.1_695, 0.1_693, 0.1_507, 0.1_705, 0.1_547, 0.1_751, 0.1_949]	)

            assert np.abs(image_slice.flatten() - expected_slice	).max() < 5E-2


       def    lowerCAmelCase   ( self	)   ->	int:



            '''simple docstring'''




            __snake_case            =	StableDiffusionSAGPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''	)
            __snake_case            =	sag_pipe.to(__SCREAMING_SNAKE_CASE	)
            sag_pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE	)

            __snake_case            =	'''.'''
            __snake_case            =	torch.manual_seed(0	)
            __snake_case            =	sag_pipe(
                [prompt]     ,	generator=__SCREAMING_SNAKE_CASE     ,	guidance_scale=7.5     ,	sag_scale=1.0     ,	num_inference_steps=20     ,	output_type='''np'''	)

            __snake_case            =	output.images

            __snake_case            =	image[0, -3:, -3:, -1]

            assert image.shape == (1, 512, 512, 3)
            __snake_case            =	np.array([0.3_459, 0.2_876, 0.2_537, 0.3_002, 0.2_671, 0.2_160, 0.3_026, 0.2_262, 0.2_371]	)

            assert np.abs(image_slice.flatten() - expected_slice	).max() < 5E-2




       def    lowerCAmelCase   ( self	)   ->	str:



            '''simple docstring'''




            __snake_case            =	StableDiffusionSAGPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''	)
            __snake_case            =	sag_pipe.to(__SCREAMING_SNAKE_CASE	)
            sag_pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE	)

            __snake_case            =	'''.'''
            __snake_case            =	torch.manual_seed(0	)
            __snake_case            =	sag_pipe(
                [prompt]     ,	width=768     ,	height=512     ,	generator=__SCREAMING_SNAKE_CASE     ,	guidance_scale=7.5     ,	sag_scale=1.0     ,	num_inference_steps=20     ,	output_type='''np'''     ,	)

            __snake_case            =	output.images

            assert image.shape == (1, 512, 768, 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())))






