


import unittest

import numpy as np
import torch

from diffusers import PNDMPipeline, PNDMScheduler, UNetaDModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()

class 						A__							(		unittest.TestCase  ):




						@property
						def 							__UpperCamelCase				(       self					:      Dict  )							->     List[Any]:


										"""simple docstring"""





										torch.manual_seed(0  )
										_SCREAMING_SNAKE_CASE			  =UNetaDModel(
										    block_out_channels=(32, 64)				,    layers_per_block=2				,    sample_size=32				,    in_channels=3				,    out_channels=3				,    down_block_types=('''DownBlock2D''', '''AttnDownBlock2D''')				,    up_block_types=('''AttnUpBlock2D''', '''UpBlock2D''')				,    )
										return model




						def 							__UpperCamelCase				(       self					:      List[Any]  )							->     List[Any]:


										"""simple docstring"""





										_SCREAMING_SNAKE_CASE			  =self.dummy_uncond_unet
										_SCREAMING_SNAKE_CASE			  =PNDMScheduler()

										_SCREAMING_SNAKE_CASE			  =PNDMPipeline(unet=_a				,    scheduler=_a  )
										pndm.to(_a  )
										pndm.set_progress_bar_config(disable=_a  )

										_SCREAMING_SNAKE_CASE			  =torch.manual_seed(0  )
										_SCREAMING_SNAKE_CASE			  =pndm(generator=_a				,    num_inference_steps=20				,    output_type='''numpy'''  ).images

										_SCREAMING_SNAKE_CASE			  =torch.manual_seed(0  )
										_SCREAMING_SNAKE_CASE			  =pndm(generator=_a				,    num_inference_steps=20				,    output_type='''numpy'''				,    return_dict=_a  )[0]

										_SCREAMING_SNAKE_CASE			  =image[0, -3:, -3:, -1]
										_SCREAMING_SNAKE_CASE			  =image_from_tuple[0, -3:, -3:, -1]

										assert image.shape == (1, 32, 32, 3)
										_SCREAMING_SNAKE_CASE			  =np.array([1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0]  )

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

@slow
@require_torch
class 						A__							(		unittest.TestCase  ):




						def 							__UpperCamelCase				(       self					:      List[str]  )							->     List[Any]:


										"""simple docstring"""





										_SCREAMING_SNAKE_CASE			  ='''google/ddpm-cifar10-32'''

										_SCREAMING_SNAKE_CASE			  =UNetaDModel.from_pretrained(_a  )
										_SCREAMING_SNAKE_CASE			  =PNDMScheduler()

										_SCREAMING_SNAKE_CASE			  =PNDMPipeline(unet=_a				,    scheduler=_a  )
										pndm.to(_a  )
										pndm.set_progress_bar_config(disable=_a  )
										_SCREAMING_SNAKE_CASE			  =torch.manual_seed(0  )
										_SCREAMING_SNAKE_CASE			  =pndm(generator=_a				,    output_type='''numpy'''  ).images

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

										assert image.shape == (1, 32, 32, 3)
										_SCREAMING_SNAKE_CASE			  =np.array([0.15_64, 0.1_46_45, 0.14_06, 0.1_47_15, 0.1_24_25, 0.1_40_45, 0.1_31_15, 0.1_21_75, 0.1_25]  )

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



from collections.abc import Generator







def 						lowerCamelCase(   ):
				_SCREAMING_SNAKE_CASE  ,				_SCREAMING_SNAKE_CASE			  =0, 1
				while True:
								_SCREAMING_SNAKE_CASE  ,				_SCREAMING_SNAKE_CASE			  =b, a + b
								yield b







def 						lowerCamelCase(   a__ = 1000):
				_SCREAMING_SNAKE_CASE			  =1
				_SCREAMING_SNAKE_CASE			  =fibonacci_generator()
				while len(str(next(a__))) < n:
								answer += 1
				return answer + 1


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