



'''simple docstring'''




import os
from pathlib import Path



def       __lowerCamelCase  (					)      ->			List[Any]:
							from torch.utils.cpp_extension import load

							UpperCAmelCase     :		Dict							     =		Path(_lowercase		).resolve().parent.parent.parent / """kernels""" / """deformable_detr"""
							UpperCAmelCase     :		List[str]							     =		[
							    root / filename
							    for filename in [
							        """vision.cpp""",
							        os.path.join("""cpu"""	,				"""ms_deform_attn_cpu.cpp"""		),
							        os.path.join("""cuda"""	,				"""ms_deform_attn_cuda.cu"""		),
							    ]
							]

							load(
							    """MultiScaleDeformableAttention"""	,				_lowercase	,				with_cuda=_lowercase	,				extra_include_paths=[str(_lowercase		)]	,				extra_cflags=["""-DWITH_CUDA=1"""]	,				extra_cuda_cflags=[
							        """-DCUDA_HAS_FP16=1""",
							        """-D__CUDA_NO_HALF_OPERATORS__""",
							        """-D__CUDA_NO_HALF_CONVERSIONS__""",
							        """-D__CUDA_NO_HALF2_OPERATORS__""",
							    ]	,				)

							import MultiScaleDeformableAttention as MSDA

							return MSDA






'''simple docstring'''




from itertools import count



def       __lowerCamelCase  (					_lowercase = 5_0		)      ->			int:
							UpperCAmelCase     :		Any							     =		[1] * min_block_length

							for n in count(_lowercase		):
														fill_count_functions.append(1		)

														for block_length in range(_lowercase	,				n + 1		):
																					for block_start in range(n - block_length		):
																												fill_count_functions[n] += fill_count_functions[
																												    n - block_start - block_length - 1
																												]

																					fill_count_functions[n] += 1

														if fill_count_functions[n] > 1_0_0_0_0_0_0:
																					break

							return n


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

