



from unittest.mock import patch

import pyspark

from datasets.packaged_modules.spark.spark import (
    Spark,
    SparkExamplesIterable,
    _generate_iterable_examples,
)

from ..utils import (
    require_dill_gt_0_3_2,
    require_not_windows,
)






def      lowerCAmelCase__		(   lowerCamelCase_		:		int	,lowerCamelCase_		:		List[Any]):





				'''simple docstring'''

				lowerCAmelCase__					:    Tuple												=					[]
				for part_id in partition_order:
								lowerCAmelCase__					:    int												=					df.where(f"""SPARK_PARTITION_ID() = {part_id}""").collect()
								for row_idx, row in enumerate(lowerCamelCase_):
												expected_row_ids_and_row_dicts.append((f"""{part_id}_{row_idx}""", row.asDict()))
				return expected_row_ids_and_row_dicts






@require_not_windows
@require_dill_gt_0_3_2
def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				lowerCAmelCase__					:    Union[str, Any]												=					pyspark.sql.SparkSession.builder.master('''local[*]''').appName('''pyspark''').getOrCreate()
				lowerCAmelCase__					:    Optional[Any]												=					spark.range(100).repartition(1)
				lowerCAmelCase__					:    Dict												=					Spark(lowerCamelCase_)
				# The id ints will be converted to Pyarrow int64s, so each row will be 8 bytes. Setting a max_shard_size of 16 means
				# that each partition can hold 2 rows.
				spark_builder._repartition_df_if_needed(max_shard_size=16)
				# Given that the dataframe has 100 rows and each partition has 2 rows, we expect 50 partitions.
				assert spark_builder.df.rdd.getNumPartitions() == 50






@require_not_windows
@require_dill_gt_0_3_2
def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				lowerCAmelCase__					:    Tuple												=					pyspark.sql.SparkSession.builder.master('''local[*]''').appName('''pyspark''').getOrCreate()
				lowerCAmelCase__					:    int												=					spark.range(10).repartition(2)
				lowerCAmelCase__					:    str												=					[1, 0]
				lowerCAmelCase__					:    List[Any]												=					_generate_iterable_examples(lowerCamelCase_	,lowerCamelCase_)  # Reverse the partitions.
				lowerCAmelCase__					:    List[Any]												=					_get_expected_row_ids_and_row_dicts_for_partition_order(lowerCamelCase_	,lowerCamelCase_)

				for i, (row_id, row_dict) in enumerate(generate_fn()):
								lowerCAmelCase__						,		lowerCAmelCase__					:    Optional[Any]												=					expected_row_ids_and_row_dicts[i]
								assert row_id == expected_row_id
								assert row_dict == expected_row_dict






@require_not_windows
@require_dill_gt_0_3_2
def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				lowerCAmelCase__					:    Optional[Any]												=					pyspark.sql.SparkSession.builder.master('''local[*]''').appName('''pyspark''').getOrCreate()
				lowerCAmelCase__					:    Any												=					spark.range(10).repartition(1)
				lowerCAmelCase__					:    Optional[Any]												=					SparkExamplesIterable(lowerCamelCase_)
				assert it.n_shards == 1
				for i, (row_id, row_dict) in enumerate(lowerCamelCase_):
								assert row_id == f"""0_{i}"""
								assert row_dict == {"id": i}






@require_not_windows
@require_dill_gt_0_3_2
def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				lowerCAmelCase__					:    Tuple												=					pyspark.sql.SparkSession.builder.master('''local[*]''').appName('''pyspark''').getOrCreate()
				lowerCAmelCase__					:    List[str]												=					spark.range(30).repartition(3)
				# Mock the generator so that shuffle reverses the partition indices.
				with patch('''numpy.random.Generator''') as generator_mock:
								lowerCAmelCase__					:    Union[str, Any]												=					lambda lowerCamelCase_: x.reverse()
								lowerCAmelCase__					:    Union[str, Any]												=					_get_expected_row_ids_and_row_dicts_for_partition_order(lowerCamelCase_	,[2, 1, 0])

								lowerCAmelCase__					:    List[str]												=					SparkExamplesIterable(lowerCamelCase_).shuffle_data_sources(lowerCamelCase_)
								assert shuffled_it.n_shards == 3
								for i, (row_id, row_dict) in enumerate(lowerCamelCase_):
												lowerCAmelCase__						,		lowerCAmelCase__					:    Tuple												=					expected_row_ids_and_row_dicts[i]
												assert row_id == expected_row_id
												assert row_dict == expected_row_dict






@require_not_windows
@require_dill_gt_0_3_2
def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				lowerCAmelCase__					:    Dict												=					pyspark.sql.SparkSession.builder.master('''local[*]''').appName('''pyspark''').getOrCreate()
				lowerCAmelCase__					:    int												=					spark.range(20).repartition(4)

				# Partitions 0 and 2
				lowerCAmelCase__					:    List[str]												=					SparkExamplesIterable(lowerCamelCase_).shard_data_sources(worker_id=0	,num_workers=2)
				assert shard_it_a.n_shards == 2
				lowerCAmelCase__					:    List[Any]												=					_get_expected_row_ids_and_row_dicts_for_partition_order(lowerCamelCase_	,[0, 2])
				for i, (row_id, row_dict) in enumerate(lowerCamelCase_):
								lowerCAmelCase__						,		lowerCAmelCase__					:    Optional[Any]												=					expected_row_ids_and_row_dicts_a[i]
								assert row_id == expected_row_id
								assert row_dict == expected_row_dict

				# Partitions 1 and 3
				lowerCAmelCase__					:    List[Any]												=					SparkExamplesIterable(lowerCamelCase_).shard_data_sources(worker_id=1	,num_workers=2)
				assert shard_it_a.n_shards == 2
				lowerCAmelCase__					:    str												=					_get_expected_row_ids_and_row_dicts_for_partition_order(lowerCamelCase_	,[1, 3])
				for i, (row_id, row_dict) in enumerate(lowerCamelCase_):
								lowerCAmelCase__						,		lowerCAmelCase__					:    Dict												=					expected_row_ids_and_row_dicts_a[i]
								assert row_id == expected_row_id
								assert row_dict == expected_row_dict






@require_not_windows
@require_dill_gt_0_3_2
def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				lowerCAmelCase__					:    Tuple												=					pyspark.sql.SparkSession.builder.master('''local[*]''').appName('''pyspark''').getOrCreate()
				lowerCAmelCase__					:    Dict												=					spark.range(100).repartition(1)
				lowerCAmelCase__					:    Union[str, Any]												=					Spark(lowerCamelCase_)
				# Choose a small max_shard_size for maximum partitioning.
				spark_builder._repartition_df_if_needed(max_shard_size=1)
				# The new number of partitions should not be greater than the number of rows.
				assert spark_builder.df.rdd.getNumPartitions() == 100






from math import factorial






def      lowerCAmelCase__		(   lowerCamelCase_		:		int = 100):





				'''simple docstring'''

				return sum(map(lowerCamelCase_	,str(factorial(lowerCamelCase_))))


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

