


'''simple docstring'''
import importlib
from typing import List, Optional, Union

from seqeval.metrics import accuracy_score, classification_report

import datasets


__magic_name__   :   Tuple  							='\\n@inproceedings{ramshaw-marcus-1995-text,\n    title = "Text Chunking using Transformation-Based Learning",\n    author = "Ramshaw, Lance  and\n      Marcus, Mitch",\n    booktitle = "Third Workshop on Very Large Corpora",\n    year = "1995",\n    url = "https://www.aclweb.org/anthology/W95-0107",\n}\n@misc{seqeval,\n  title={{seqeval}: A Python framework for sequence labeling evaluation},\n  url={https://github.com/chakki-works/seqeval},\n  note={Software available from https://github.com/chakki-works/seqeval},\n  author={Hiroki Nakayama},\n  year={2018},\n}\n'

__magic_name__   :   List[Any]  							='\\nseqeval is a Python framework for sequence labeling evaluation.\nseqeval can evaluate the performance of chunking tasks such as named-entity recognition, part-of-speech tagging, semantic role labeling and so on.\n\nThis is well-tested by using the Perl script conlleval, which can be used for\nmeasuring the performance of a system that has processed the CoNLL-2000 shared task data.\n\nseqeval supports following formats:\nIOB1\nIOB2\nIOE1\nIOE2\nIOBES\n\nSee the [README.md] file at https://github.com/chakki-works/seqeval for more information.\n'

__magic_name__   :   Union[str, Any]  							='\nProduces labelling scores along with its sufficient statistics\nfrom a source against one or more references.\n\nArgs:\n    predictions: List of List of predicted labels (Estimated targets as returned by a tagger)\n    references: List of List of reference labels (Ground truth (correct) target values)\n    suffix: True if the IOB prefix is after type, False otherwise. default: False\n    scheme: Specify target tagging scheme. Should be one of ["IOB1", "IOB2", "IOE1", "IOE2", "IOBES", "BILOU"].\n        default: None\n    mode: Whether to count correct entity labels with incorrect I/B tags as true positives or not.\n        If you want to only count exact matches, pass mode="strict". default: None.\n    sample_weight: Array-like of shape (n_samples,), weights for individual samples. default: None\n    zero_division: Which value to substitute as a metric value when encountering zero division. Should be on of 0, 1,\n        "warn". "warn" acts as 0, but the warning is raised.\n\nReturns:\n    \'scores\': dict. Summary of the scores for overall and per type\n        Overall:\n            \'accuracy\': accuracy,\n            \'precision\': precision,\n            \'recall\': recall,\n            \'f1\': F1 score, also known as balanced F-score or F-measure,\n        Per type:\n            \'precision\': precision,\n            \'recall\': recall,\n            \'f1\': F1 score, also known as balanced F-score or F-measure\nExamples:\n\n    >>> predictions = [[\'O\', \'O\', \'B-MISC\', \'I-MISC\', \'I-MISC\', \'I-MISC\', \'O\'], [\'B-PER\', \'I-PER\', \'O\']]\n    >>> references = [[\'O\', \'O\', \'O\', \'B-MISC\', \'I-MISC\', \'I-MISC\', \'O\'], [\'B-PER\', \'I-PER\', \'O\']]\n    >>> seqeval = datasets.load_metric("seqeval")\n    >>> results = seqeval.compute(predictions=predictions, references=references)\n    >>> print(list(results.keys()))\n    [\'MISC\', \'PER\', \'overall_precision\', \'overall_recall\', \'overall_f1\', \'overall_accuracy\']\n    >>> print(results["overall_f1"])\n    0.5\n    >>> print(results["PER"]["f1"])\n    1.0\n'






@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION   ,		_KWARGS_DESCRIPTION   )
class 		UpperCamelCase_		(					datasets.Metric   ):





						"""simple docstring"""




						def 					__A					( self				:					str  )							->					Optional[Any]:
										return datasets.MetricInfo(
										    description=_DESCRIPTION	,				citation=_CITATION	,				homepage="https://github.com/chakki-works/seqeval"	,				inputs_description=_KWARGS_DESCRIPTION	,				features=datasets.Features(
										        {
										            "predictions": datasets.Sequence(datasets.Value("string"	,				id="label"  )	,				id="sequence"  ),
										            "references": datasets.Sequence(datasets.Value("string"	,				id="label"  )	,				id="sequence"  ),
										        }  )	,				codebase_urls=["https://github.com/chakki-works/seqeval"]	,				reference_urls=["https://github.com/chakki-works/seqeval"]	,				)

						def 					__A					( self				:					List[str]	,				_lowerCamelCase				:					int	,				_lowerCamelCase				:					Any	,				_lowerCamelCase				:					bool = False	,				_lowerCamelCase				:					Optional[str] = None	,				_lowerCamelCase				:					Optional[str] = None	,				_lowerCamelCase				:					Optional[List[int]] = None	,				_lowerCamelCase				:					Union[str, int] = "warn"	,				)							->					Union[str, Any]:
										if scheme is not None:
														try:
																		__magic_name__	  = importlib.import_module("seqeval.scheme"  )
																		__magic_name__	  = getattr(_lowerCamelCase	,				_lowerCamelCase  )
														except AttributeError:
																		raise ValueError(f'Scheme should be one of [IOB1, IOB2, IOE1, IOE2, IOBES, BILOU], got {scheme}'  )
										__magic_name__	  = classification_report(
										    y_true=_lowerCamelCase	,				y_pred=_lowerCamelCase	,				suffix=_lowerCamelCase	,				output_dict=_lowerCamelCase	,				scheme=_lowerCamelCase	,				mode=_lowerCamelCase	,				sample_weight=_lowerCamelCase	,				zero_division=_lowerCamelCase	,				)
										report.pop("macro avg"  )
										report.pop("weighted avg"  )
										__magic_name__	  = report.pop("micro avg"  )

										__magic_name__	  = {
										    type_name: {
										        "precision": score["precision"],
										        "recall": score["recall"],
										        "f1": score["f1-score"],
										        "number": score["support"],
										    }
										    for type_name, score in report.items()
										}
										__magic_name__	  = overall_score["precision"]
										__magic_name__	  = overall_score["recall"]
										__magic_name__	  = overall_score["f1-score"]
										__magic_name__	  = accuracy_score(y_true=_lowerCamelCase	,				y_pred=_lowerCamelCase  )

										return scores







'''simple docstring'''
def      __snake_case       (       lowerCamelCase_ :				int = 100						):
				'''simple docstring'''




				__magic_name__	  = [[0 for _ in range(lowerCamelCase_						)] for _ in range(m + 1						)]
				for i in range(m + 1						):
								__magic_name__	  = 1

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

				return memo[m][m - 1] - 1


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



