



import json
import os

import torch

from diffusers import UNetaDModel


os.makedirs("hub/hopper-medium-v2/unet/hor32", exist_ok=True)
os.makedirs("hub/hopper-medium-v2/unet/hor128", exist_ok=True)

os.makedirs("hub/hopper-medium-v2/value_function", exist_ok=True)







def     UpperCAmelCase_		(					snake_case__					)	->     List[str]:



				"""simple docstring"""





				if hor == 128:
								lowerCAmelCase__		  =  ('DownResnetBlock1D', 'DownResnetBlock1D', 'DownResnetBlock1D')
								lowerCAmelCase__		  =  (32, 128, 256)
								lowerCAmelCase__		  =  ('UpResnetBlock1D', 'UpResnetBlock1D')

				elif hor == 32:
								lowerCAmelCase__		  =  ('DownResnetBlock1D', 'DownResnetBlock1D', 'DownResnetBlock1D', 'DownResnetBlock1D')
								lowerCAmelCase__		  =  (32, 64, 128, 256)
								lowerCAmelCase__		  =  ('UpResnetBlock1D', 'UpResnetBlock1D', 'UpResnetBlock1D')
				lowerCAmelCase__		  =  torch.load(f'/Users/bglickenhaus/Documents/diffuser/temporal_unet-hopper-mediumv2-hor{hor}.torch'					)
				lowerCAmelCase__		  =  model.state_dict()
				lowerCAmelCase__		  =  {
				    'down_block_types': down_block_types,
				    'block_out_channels': block_out_channels,
				    'up_block_types': up_block_types,
				    'layers_per_block': 1,
				    'use_timestep_embedding': True,
				    'out_block_type': 'OutConv1DBlock',
				    'norm_num_groups': 8,
				    'downsample_each_block': False,
				    'in_channels': 14,
				    'out_channels': 14,
				    'extra_in_channels': 0,
				    'time_embedding_type': 'positional',
				    'flip_sin_to_cos': False,
				    'freq_shift': 1,
				    'sample_size': 65536,
				    'mid_block_type': 'MidResTemporalBlock1D',
				    'act_fn': 'mish',
				}
				lowerCAmelCase__		  =  UNetaDModel(**snake_case__					)
				print(f'length of state dict: {len(state_dict.keys()					)}'					)
				print(f'length of value function dict: {len(hf_value_function.state_dict().keys()					)}'					)
				lowerCAmelCase__		  =  dict(zip(model.state_dict().keys()    ,			hf_value_function.state_dict().keys()					)					)
				for k, v in mapping.items():
								lowerCAmelCase__		  =  state_dict.pop(snake_case__					)
				hf_value_function.load_state_dict(snake_case__					)

				torch.save(hf_value_function.state_dict()    ,			f'hub/hopper-medium-v2/unet/hor{hor}/diffusion_pytorch_model.bin'					)
				with open(f'hub/hopper-medium-v2/unet/hor{hor}/config.json'    ,			'w'					) as f:
								json.dump(snake_case__    ,			snake_case__					)







def     UpperCAmelCase_		(					)	->     Dict:



				"""simple docstring"""





				lowerCAmelCase__		  =  {
				    'in_channels': 14,
				    'down_block_types': ('DownResnetBlock1D', 'DownResnetBlock1D', 'DownResnetBlock1D', 'DownResnetBlock1D'),
				    'up_block_types': (),
				    'out_block_type': 'ValueFunction',
				    'mid_block_type': 'ValueFunctionMidBlock1D',
				    'block_out_channels': (32, 64, 128, 256),
				    'layers_per_block': 1,
				    'downsample_each_block': True,
				    'sample_size': 65536,
				    'out_channels': 14,
				    'extra_in_channels': 0,
				    'time_embedding_type': 'positional',
				    'use_timestep_embedding': True,
				    'flip_sin_to_cos': False,
				    'freq_shift': 1,
				    'norm_num_groups': 8,
				    'act_fn': 'mish',
				}

				lowerCAmelCase__		  =  torch.load('/Users/bglickenhaus/Documents/diffuser/value_function-hopper-mediumv2-hor32.torch'					)
				lowerCAmelCase__		  =  model
				lowerCAmelCase__		  =  UNetaDModel(**snake_case__					)
				print(f'length of state dict: {len(state_dict.keys()					)}'					)
				print(f'length of value function dict: {len(hf_value_function.state_dict().keys()					)}'					)

				lowerCAmelCase__		  =  dict(zip(state_dict.keys()    ,			hf_value_function.state_dict().keys()					)					)
				for k, v in mapping.items():
								lowerCAmelCase__		  =  state_dict.pop(snake_case__					)

				hf_value_function.load_state_dict(snake_case__					)

				torch.save(hf_value_function.state_dict()    ,			'hub/hopper-medium-v2/value_function/diffusion_pytorch_model.bin'					)
				with open('hub/hopper-medium-v2/value_function/config.json'    ,			'w'					) as f:
								json.dump(snake_case__    ,			snake_case__					)


if __name__ == "__main__":
	unet(3_2)
	# unet(128)
	value_function()





def     UpperCAmelCase_		(					)	->     int:



				"""simple docstring"""





				return 1







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else two_pence(x - 2					) + one_pence()







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else five_pence(x - 5					) + two_pence(snake_case__					)







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else ten_pence(x - 10					) + five_pence(snake_case__					)







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else twenty_pence(x - 20					) + ten_pence(snake_case__					)







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else fifty_pence(x - 50					) + twenty_pence(snake_case__					)







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else one_pound(x - 100					) + fifty_pence(snake_case__					)







def     UpperCAmelCase_		(					snake_case__					)	->     int:



				"""simple docstring"""





				return 0 if x < 0 else two_pound(x - 200					) + one_pound(snake_case__					)







def     UpperCAmelCase_		(					snake_case__ = 200					)	->     int:



				"""simple docstring"""





				return two_pound(snake_case__					)


if __name__ == "__main__":
	print(solution(int(input().strip())))
