




UpperCamelCase__         =      [sum(int(c, 10) ** 2 for c in i.__str__()) for i in range(100000)]







def      _a				(						SCREAMING_SNAKE_CASE_							:    int					):
					__lowerCAmelCase           =	0
					while number:
										# Increased Speed Slightly by checking every 5 digits together.
										sum_of_digits_squared += DIGITS_SQUARED[number % 10_00_00]
										number //= 10_00_00

					return sum_of_digits_squared


# There are 2 Chains made,
# One ends with 89 with the chain member 58 being the one which when declared first,
# there will be the least number of iterations for all the members to be checked.

# The other one ends with 1 and has only one element 1.

# So 58 and 1 are chosen to be declared at the starting.

# Changed dictionary to an array to quicken the solution
UpperCamelCase__         =      [None] * 10000000
UpperCamelCase__         =      True
UpperCamelCase__         =      False







def      _a				(						SCREAMING_SNAKE_CASE_							:    int					):

					if CHAINS[number - 1] is not None:
										return CHAINS[number - 1]  # type: ignore

					__lowerCAmelCase           =	chain(next_number(SCREAMING_SNAKE_CASE_					)					)
					__lowerCAmelCase           =	number_chain

					while number < 10_00_00_00:
										__lowerCAmelCase           =	number_chain
										number *= 10

					return number_chain







def      _a				(						SCREAMING_SNAKE_CASE_							:    int = 10_00_00_00					):
					for i in range(1				,				SCREAMING_SNAKE_CASE_					):
										if CHAINS[i] is None:
															chain(i + 1					)

					return CHAINS[:number].count(SCREAMING_SNAKE_CASE_					)


if __name__ == "__main__":
					import doctest

					doctest.testmod()
					print(f'''{solution() = }''')










import unittest

import numpy as np
import torch

from diffusers import ScoreSdeVePipeline, ScoreSdeVeScheduler, UNetaDModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()
class       a__   ( unittest.TestCase				):






						@property
						def     __SCREAMING_SNAKE_CASE(       self      ):




											"""simple docstring"""



											torch.manual_seed(0      )
											__lowerCAmelCase           =	UNetaDModel(
											    block_out_channels=(3_2, 6_4)		,      layers_per_block=2		,      sample_size=3_2		,      in_channels=3		,      out_channels=3		,      down_block_types=("DownBlock2D", "AttnDownBlock2D")		,      up_block_types=("AttnUpBlock2D", "UpBlock2D")		,      )
											return model






						def     __SCREAMING_SNAKE_CASE(       self      ):




											"""simple docstring"""



											__lowerCAmelCase           =	self.dummy_uncond_unet
											__lowerCAmelCase           =	ScoreSdeVeScheduler()

											__lowerCAmelCase           =	ScoreSdeVePipeline(unet=_A		,      scheduler=_A      )
											sde_ve.to(_A      )
											sde_ve.set_progress_bar_config(disable=_A      )

											__lowerCAmelCase           =	torch.manual_seed(0      )
											__lowerCAmelCase           =	sde_ve(num_inference_steps=2		,      output_type="numpy"		,      generator=_A      ).images

											__lowerCAmelCase           =	torch.manual_seed(0      )
											__lowerCAmelCase           =	sde_ve(num_inference_steps=2		,      output_type="numpy"		,      generator=_A		,      return_dict=_A      )[
											    0
											]

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

											assert image.shape == (1, 3_2, 3_2, 3)
											__lowerCAmelCase           =	np.array([0.0, 1.0, 0.0, 0.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     __SCREAMING_SNAKE_CASE(       self      ):




											"""simple docstring"""



											__lowerCAmelCase           =	"google/ncsnpp-church-256"
											__lowerCAmelCase           =	UNetaDModel.from_pretrained(_A      )

											__lowerCAmelCase           =	ScoreSdeVeScheduler.from_pretrained(_A      )

											__lowerCAmelCase           =	ScoreSdeVePipeline(unet=_A		,      scheduler=_A      )
											sde_ve.to(_A      )
											sde_ve.set_progress_bar_config(disable=_A      )

											__lowerCAmelCase           =	torch.manual_seed(0      )
											__lowerCAmelCase           =	sde_ve(num_inference_steps=1_0		,      output_type="numpy"		,      generator=_A      ).images

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

											assert image.shape == (1, 2_5_6, 2_5_6, 3)

											__lowerCAmelCase           =	np.array([0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]      )

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




