






'''simple docstring'''

import unittest

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

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()
class _lowerCamelCase	(						unittest.TestCase							):



		'''simple docstring'''







		@property
		def        __lowerCAmelCase		( self		:						Optional[Any]      )  ->			str:
			torch.manual_seed(0      )
			__magic_name__	:   Optional[int]					     =					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







		@property
		def        __lowerCAmelCase		( self		:						Tuple      )  ->			List[Any]:
			torch.manual_seed(0      )
			__magic_name__	:   Dict					     =					VQModel(
			    block_out_channels=[32, 64]  ,					in_channels=3  ,					out_channels=3  ,					down_block_types=['DownEncoderBlock2D', 'DownEncoderBlock2D']  ,					up_block_types=['UpDecoderBlock2D', 'UpDecoderBlock2D']  ,					latent_channels=3  ,					)
			return model







		@property
		def        __lowerCAmelCase		( self		:						List[Any]      )  ->			List[Any]:
			torch.manual_seed(0      )
			__magic_name__	:   int					     =					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  ,					)
			return CLIPTextModel(__A      )







		def        __lowerCAmelCase		( self		:						Optional[Any]      )  ->			List[str]:
			__magic_name__	:   str					     =					self.dummy_uncond_unet
			__magic_name__	:   str					     =					DDIMScheduler()
			__magic_name__	:   Optional[int]					     =					self.dummy_vq_model

			__magic_name__	:   Tuple					     =					LDMPipeline(unet=__A  ,					vqvae=__A  ,					scheduler=__A      )
			ldm.to(__A      )
			ldm.set_progress_bar_config(disable=__A      )

			__magic_name__	:   Optional[int]					     =					torch.manual_seed(0      )
			__magic_name__	:   Optional[int]					     =					ldm(generator=__A  ,					num_inference_steps=2  ,					output_type='numpy'      ).images

			__magic_name__	:   Optional[int]					     =					torch.manual_seed(0      )
			__magic_name__	:   Tuple					     =					ldm(generator=__A  ,					num_inference_steps=2  ,					output_type='numpy'  ,					return_dict=__A      )[0]

			__magic_name__	:   int					     =					image[0, -3:, -3:, -1]
			__magic_name__	:   int					     =					image_from_tuple[0, -3:, -3:, -1]

			assert image.shape == (1, 64, 64, 3)
			__magic_name__	:   Dict					     =					np.array([0.8512, 0.818, 0.6411, 0.6808, 0.4465, 0.5618, 0.46, 0.6231, 0.5172]      )
			__magic_name__	:   Any					     =					1E-2 if torch_device != """mps""" else 3E-2

			assert np.abs(image_slice.flatten() - expected_slice      ).max() < tolerance
			assert np.abs(image_from_tuple_slice.flatten() - expected_slice      ).max() < tolerance







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



		'''simple docstring'''







		def        __lowerCAmelCase		( self		:						Dict      )  ->			str:
			__magic_name__	:   str					     =					LDMPipeline.from_pretrained('CompVis/ldm-celebahq-256'      )
			ldm.to(__A      )
			ldm.set_progress_bar_config(disable=__A      )

			__magic_name__	:   Optional[int]					     =					torch.manual_seed(0      )
			__magic_name__	:   Any					     =					ldm(generator=__A  ,					num_inference_steps=5  ,					output_type='numpy'      ).images

			__magic_name__	:   Union[str, Any]					     =					image[0, -3:, -3:, -1]

			assert image.shape == (1, 256, 256, 3)
			__magic_name__	:   Dict					     =					np.array([0.4399, 0.4_4975, 0.4_6825, 0.474, 0.4359, 0.4581, 0.4_5095, 0.4341, 0.4447]      )
			__magic_name__	:   Optional[int]					     =					1E-2 if torch_device != """mps""" else 3E-2

			assert np.abs(image_slice.flatten() - expected_slice      ).max() < tolerance



'''simple docstring'''

def lowerCamelCase      (      lowerCAmelCase    :     int		):





	"""simple docstring"""







	__magic_name__	:   Optional[int]					     =					1
	for i in range(1		,		num + 1		):
		fact *= i
	return fact





def lowerCamelCase      (      lowerCAmelCase    :     int		):





	"""simple docstring"""







	__magic_name__	:   List[str]					     =					0
	while number > 0:
		__magic_name__	:   str					     =					number % 10
		sum_of_digits += last_digit
		__magic_name__	:   Optional[int]					     =					number // 10  # Removing the last_digit from the given number
	return sum_of_digits





def lowerCamelCase      (      lowerCAmelCase    :     int = 100		):





	"""simple docstring"""







	__magic_name__	:   int					     =					factorial(lowerCAmelCase		)
	__magic_name__	:   Any					     =					split_and_add(lowerCAmelCase		)
	return result


if __name__ == "__main__":
							print(solution(int(input('''Enter the Number: ''').strip())))