
'''simple docstring'''
from __future__ import annotations

from functools import lru_cache
from math import ceil

lowerCAmelCase					:    Tuple           = 1_00

lowerCAmelCase					:    Tuple           = set(range(3, NUM_PRIMES, 2))
primes.add(2)
lowerCAmelCase					:    int

for prime in range(3, ceil(NUM_PRIMES**0.5), 2):
						if prime not in primes:
												continue
						primes.difference_update(set(range(prime * prime, NUM_PRIMES, prime)))







@lru_cache(maxsize=100)
def 		A_(     A						:		int):
							if number_to_partition < 0:
														return set()
							elif number_to_partition == 0:
														return {1}

							UpperCamelCase   			=     set()
							UpperCamelCase   			=     42
							UpperCamelCase   			=     42

							for prime in primes:
														if prime > number_to_partition:
																					continue
														for sub in partition(number_to_partition - prime):
																					ret.add(sub * prime)

							return ret







def 		A_(     A						:		int = 5000):
							for number_to_partition in range(1		,     A):
														if len(partition(A)) > number_unique_partitions:
																					return number_to_partition
							return None


if __name__ == "__main__":
						print(f"""{solution() = }""")






'''simple docstring'''
import unittest

import numpy as np

from transformers.testing_utils import is_flaky, require_torch, require_vision
from transformers.utils import is_torch_available, is_vision_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
						import torch

if is_vision_available():
						from PIL import Image

						from transformers import DonutImageProcessor


class 			SCREAMING_SNAKE_CASE__      (     unittest.TestCase):







				def __init__(       self						,				A_						,				A_=7						,				A_=3						,				A_=18						,				A_=30						,				A_=400						,				A_=True						,				A_=None						,				A_=True						,				A_=False						,				A_=True						,				A_=True						,				A_=[0.5, 0.5, 0.5]						,				A_=[0.5, 0.5, 0.5]						,				)->		Dict:







											'''simple docstring'''






											UpperCamelCase   			=     parent
											UpperCamelCase   			=     batch_size
											UpperCamelCase   			=     num_channels
											UpperCamelCase   			=     image_size
											UpperCamelCase   			=     min_resolution
											UpperCamelCase   			=     max_resolution
											UpperCamelCase   			=     do_resize
											UpperCamelCase   			=     size if size is not None else {'height': 18, 'width': 20}
											UpperCamelCase   			=     do_thumbnail
											UpperCamelCase   			=     do_align_axis
											UpperCamelCase   			=     do_pad
											UpperCamelCase   			=     do_normalize
											UpperCamelCase   			=     image_mean
											UpperCamelCase   			=     image_std







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







											'''simple docstring'''






											return {
											    "do_resize": self.do_resize,
											    "size": self.size,
											    "do_thumbnail": self.do_thumbnail,
											    "do_align_long_axis": self.do_align_axis,
											    "do_pad": self.do_pad,
											    "do_normalize": self.do_normalize,
											    "image_mean": self.image_mean,
											    "image_std": self.image_std,
											}


@require_torch
@require_vision
class 			SCREAMING_SNAKE_CASE__      (     snake_case_							,       unittest.TestCase):
				lowerCAmelCase_     			=							DonutImageProcessor if is_vision_available() else None







				def 						UpperCAmelCase_    (       self     )->		str:







											'''simple docstring'''






											UpperCamelCase   			=     DonutImageProcessingTester(self     )







				@property
				def 						UpperCAmelCase_    (       self     )->		str:







											'''simple docstring'''






											return self.image_processor_tester.prepare_image_processor_dict()







				def 						UpperCAmelCase_    (       self     )->		Optional[int]:







											'''simple docstring'''






											UpperCamelCase   			=     self.image_processing_class(**self.image_processor_dict     )
											self.assertTrue(hasattr(A_						,				'do_resize'     )     )
											self.assertTrue(hasattr(A_						,				'size'     )     )
											self.assertTrue(hasattr(A_						,				'do_thumbnail'     )     )
											self.assertTrue(hasattr(A_						,				'do_align_long_axis'     )     )
											self.assertTrue(hasattr(A_						,				'do_pad'     )     )
											self.assertTrue(hasattr(A_						,				'do_normalize'     )     )
											self.assertTrue(hasattr(A_						,				'image_mean'     )     )
											self.assertTrue(hasattr(A_						,				'image_std'     )     )







				def 						UpperCAmelCase_    (       self     )->		Optional[int]:







											'''simple docstring'''






											UpperCamelCase   			=     self.image_processing_class.from_dict(self.image_processor_dict     )
											self.assertEqual(image_processor.size						,				{'height': 18, 'width': 20}     )

											UpperCamelCase   			=     self.image_processing_class.from_dict(self.image_processor_dict						,				size=42     )
											self.assertEqual(image_processor.size						,				{'height': 42, 'width': 42}     )

											# Previous config had dimensions in (width, height) order
											UpperCamelCase   			=     self.image_processing_class.from_dict(self.image_processor_dict						,				size=(42, 84)     )
											self.assertEqual(image_processor.size						,				{'height': 84, 'width': 42}     )







				def 						UpperCAmelCase_    (       self     )->		Tuple:







											'''simple docstring'''






											pass







				@is_flaky()
				def 						UpperCAmelCase_    (       self     )->		Any:







											'''simple docstring'''






											UpperCamelCase   			=     self.image_processing_class(**self.image_processor_dict     )
											# create random PIL images
											UpperCamelCase   			=     prepare_image_inputs(self.image_processor_tester						,				equal_resolution=A_     )
											for image in image_inputs:
																		self.assertIsInstance(A_						,				Image.Image     )

											# Test not batched input
											UpperCamelCase   			=     image_processing(image_inputs[0]						,				return_tensors='pt'     ).pixel_values
											self.assertEqual(
											    encoded_images.shape						,				(
											        1,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size['height'],
											        self.image_processor_tester.size['width'],
											    )						,				)

											# Test batched
											UpperCamelCase   			=     image_processing(A_						,				return_tensors='pt'     ).pixel_values
											self.assertEqual(
											    encoded_images.shape						,				(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size['height'],
											        self.image_processor_tester.size['width'],
											    )						,				)







				@is_flaky()
				def 						UpperCAmelCase_    (       self     )->		Optional[int]:







											'''simple docstring'''






											UpperCamelCase   			=     self.image_processing_class(**self.image_processor_dict     )
											# create random numpy tensors
											UpperCamelCase   			=     prepare_image_inputs(self.image_processor_tester						,				equal_resolution=A_						,				numpify=A_     )
											for image in image_inputs:
																		self.assertIsInstance(A_						,				np.ndarray     )

											# Test not batched input
											UpperCamelCase   			=     image_processing(image_inputs[0]						,				return_tensors='pt'     ).pixel_values
											self.assertEqual(
											    encoded_images.shape						,				(
											        1,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size['height'],
											        self.image_processor_tester.size['width'],
											    )						,				)

											# Test batched
											UpperCamelCase   			=     image_processing(A_						,				return_tensors='pt'     ).pixel_values
											self.assertEqual(
											    encoded_images.shape						,				(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size['height'],
											        self.image_processor_tester.size['width'],
											    )						,				)







				@is_flaky()
				def 						UpperCAmelCase_    (       self     )->		Dict:







											'''simple docstring'''






											UpperCamelCase   			=     self.image_processing_class(**self.image_processor_dict     )
											# create random PyTorch tensors
											UpperCamelCase   			=     prepare_image_inputs(self.image_processor_tester						,				equal_resolution=A_						,				torchify=A_     )
											for image in image_inputs:
																		self.assertIsInstance(A_						,				torch.Tensor     )

											# Test not batched input
											UpperCamelCase   			=     image_processing(image_inputs[0]						,				return_tensors='pt'     ).pixel_values
											self.assertEqual(
											    encoded_images.shape						,				(
											        1,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size['height'],
											        self.image_processor_tester.size['width'],
											    )						,				)

											# Test batched
											UpperCamelCase   			=     image_processing(A_						,				return_tensors='pt'     ).pixel_values
											self.assertEqual(
											    encoded_images.shape						,				(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size['height'],
											        self.image_processor_tester.size['width'],
											    )						,				)




