"""simple docstring"""




from dataclasses import dataclass, field
from typing import Optional

from transformers import AutoConfig, AutoImageProcessor, AutoTokenizer, FlaxVisionEncoderDecoderModel, HfArgumentParser

@dataclass
class       a_      :
					UpperCamelCase_ :	str			=    field(
					    metadata={"help": "The output directory where the model will be written."} ,		)
					UpperCamelCase_ :	str			=    field(
					    metadata={
					        "help": (
					            "The encoder model checkpoint for weights initialization."
					            "Don't set if you want to train an encoder model from scratch."
					        )
					    } ,		)
					UpperCamelCase_ :	str			=    field(
					    metadata={
					        "help": (
					            "The decoder model checkpoint for weights initialization."
					            "Don't set if you want to train a decoder model from scratch."
					        )
					    } ,		)
					UpperCamelCase_ :	Optional[str]			=    field(
					    default=__UpperCamelCase ,		metadata={"help": "Pretrained encoder config name or path if not the same as encoder_model_name"}			)
					UpperCamelCase_ :	Optional[str]			=    field(
					    default=__UpperCamelCase ,		metadata={"help": "Pretrained decoder config name or path if not the same as decoder_model_name"}			)







def 							_UpperCAmelCase		(       ):





		"""simple docstring"""




		lowerCAmelCase__        =   HfArgumentParser((ModelArguments,)     )
		((lowerCAmelCase__)   ,					)        =   parser.parse_args_into_dataclasses()

		# Load pretrained model and tokenizer

		# Use explicit specified encoder config
		if model_args.encoder_config_name:
				lowerCAmelCase__        =   AutoConfig.from_pretrained(model_args.encoder_config_name     )
		# Use pretrained encoder model's config
		else:
				lowerCAmelCase__        =   AutoConfig.from_pretrained(model_args.encoder_model_name_or_path     )

		# Use explicit specified decoder config
		if model_args.decoder_config_name:
				lowerCAmelCase__        =   AutoConfig.from_pretrained(model_args.decoder_config_name     )
		# Use pretrained decoder model's config
		else:
				lowerCAmelCase__        =   AutoConfig.from_pretrained(model_args.decoder_model_name_or_path     )

		# necessary for `from_encoder_decoder_pretrained` when `decoder_config` is passed
		lowerCAmelCase__        =   True
		lowerCAmelCase__        =   True

		lowerCAmelCase__        =   FlaxVisionEncoderDecoderModel.from_encoder_decoder_pretrained(
		    encoder_pretrained_model_name_or_path=model_args.encoder_model_name_or_path			,  decoder_pretrained_model_name_or_path=model_args.decoder_model_name_or_path			,  encoder_config=lowerCamelCase__			,  decoder_config=lowerCamelCase__			,  )

		# GPT2 only has bos/eos tokens but not decoder_start/pad tokens
		lowerCAmelCase__        =   decoder_config.decoder_start_token_id
		lowerCAmelCase__        =   decoder_config.pad_token_id
		if decoder_start_token_id is None:
				lowerCAmelCase__        =   decoder_config.bos_token_id
		if pad_token_id is None:
				lowerCAmelCase__        =   decoder_config.eos_token_id

		# This is necessary to make Flax's generate() work
		lowerCAmelCase__        =   decoder_config.eos_token_id
		lowerCAmelCase__        =   decoder_start_token_id
		lowerCAmelCase__        =   pad_token_id

		lowerCAmelCase__        =   AutoImageProcessor.from_pretrained(model_args.encoder_model_name_or_path     )

		lowerCAmelCase__        =   AutoTokenizer.from_pretrained(model_args.decoder_model_name_or_path     )
		lowerCAmelCase__        =   tokenizer.convert_ids_to_tokens(model.config.pad_token_id     )

		model.save_pretrained(model_args.output_dir     )
		image_processor.save_pretrained(model_args.output_dir     )
		tokenizer.save_pretrained(model_args.output_dir     )


if __name__ == "__main__":
			main()





"""simple docstring"""




import os







def 							_UpperCAmelCase		(       ):





		"""simple docstring"""




		lowerCAmelCase__        =   os.path.dirname(os.path.realpath(lowerCamelCase__     )     )
		lowerCAmelCase__        =   os.path.join(lowerCamelCase__			,  """triangle.txt"""     )

		with open(lowerCamelCase__     ) as f:
				lowerCAmelCase__        =   f.readlines()

		lowerCAmelCase__        =   []
		for line in triangle:
				lowerCAmelCase__        =   []
				for number in line.strip().split(""" """     ):
						numbers_from_line.append(int(lowerCamelCase__     )     )
				a.append(lowerCamelCase__     )

		for i in range(1			,  len(lowerCamelCase__     )     ):
				for j in range(len(a[i]     )     ):
						lowerCAmelCase__        =   a[i - 1][j] if j != len(a[i - 1]     ) else 0
						lowerCAmelCase__        =   a[i - 1][j - 1] if j > 0 else 0
						a[i][j] += max(lowerCamelCase__			,  lowerCamelCase__     )
		return max(a[-1]     )


if __name__ == "__main__":
			print(solution())




