
"""simple docstring"""






__UpperCAmelCase       =  {0: [2, 3], 1: [0], 2: [1], 3: [4], 4: []}

__UpperCAmelCase       =  {0: [1, 2, 3], 1: [2], 2: [0], 3: [4], 4: [5], 5: [3]}






def 						_snake_case       (	lowercase__		:  dict[int, list[int]]      ,     lowercase__		:  int      ,     lowercase__		:  list[bool]		)  ->				list[int]:


			'''simple docstring'''





			lowerCAmelCase_    :List[str]			     =  True
			lowerCAmelCase_    :Any			     =  []

			for neighbour in graph[vert]:
						if not visited[neighbour]:
									order += topology_sort(lowercase__      ,     lowercase__      ,     lowercase__		)

			order.append(lowercase__		)

			return order






def 						_snake_case       (	lowercase__		:  dict[int, list[int]]      ,     lowercase__		:  int      ,     lowercase__		:  list[bool]		)  ->				list[int]:


			'''simple docstring'''





			lowerCAmelCase_    :Union[str, Any]			     =  True
			lowerCAmelCase_    :Optional[Any]			     =  [vert]

			for neighbour in reversed_graph[vert]:
						if not visited[neighbour]:
									component += find_components(lowercase__      ,     lowercase__      ,     lowercase__		)

			return component






def 						_snake_case       (	lowercase__		:  dict[int, list[int]]		)  ->				list[list[int]]:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  len(lowercase__		) * [False]
			lowerCAmelCase_    :dict[int, list[int]]			     =  {vert: [] for vert in range(len(lowercase__		)		)}

			for vert, neighbours in graph.items():
						for neighbour in neighbours:
									reversed_graph[neighbour].append(lowercase__		)

			lowerCAmelCase_    :Any			     =  []
			for i, was_visited in enumerate(lowercase__		):
						if not was_visited:
									order += topology_sort(lowercase__      ,     lowercase__      ,     lowercase__		)

			lowerCAmelCase_    :Dict			     =  []
			lowerCAmelCase_    :Optional[Any]			     =  len(lowercase__		) * [False]

			for i in range(len(lowercase__		)		):
						lowerCAmelCase_    :str			     =  order[len(lowercase__		) - i - 1]
						if not visited[vert]:
									lowerCAmelCase_    :List[Any]			     =  find_components(lowercase__      ,     lowercase__      ,     lowercase__		)
									components_list.append(lowercase__		)

			return components_list














def      lowercase__      (     __snake_case    :							int  ):


					'''simple docstring'''


					UpperCAmelCase_    :      list[list[int]]            =						[[0 for _ in range(__snake_case  )] for _ in range(m + 1  )]
					for i in range(m + 1  ):
										UpperCAmelCase_    :      Optional[Any]            =						1

					for n in range(m + 1  ):
										for k in range(1     ,       __snake_case  ):
															memo[n][k] += memo[n][k - 1]
															if n - k > 0:
																				memo[n][k] += memo[n - k - 1][k]

					return memo[m][m - 1]


if __name__ == "__main__":
		import sys

		if len(sys.argv) == 1:
				try:
						__UpperCAmelCase								=						int(input('Enter a number: ').strip())
						print(partition(n))
				except ValueError:
						print('Please enter a number.')
		else:
				try:
						__UpperCAmelCase								=						int(sys.argv[1])
						print(partition(n))
				except ValueError:
						print('Please pass a number.')






