
import argparse
import logging
import pickle
from collections import Counter


logging.basicConfig(
    format='''%(asctime)s - %(levelname)s - %(name)s - %(message)s''', datefmt='''%m/%d/%Y %H:%M:%S''', level=logging.INFO
)
_lowerCamelCase       :				Dict       =			logging.getLogger(__name__)

if __name__ == "__main__":
			_lowerCamelCase       :				List[str]       =			argparse.ArgumentParser(
			    description='''Token Counts for smoothing the masking probabilities in MLM (cf XLM/word2vec)'''
			)
			parser.add_argument(
			    '''--data_file''', type=str, default='''data/dump.bert-base-uncased.pickle''', help='''The binarized dataset.'''
			)
			parser.add_argument(
			    '''--token_counts_dump''', type=str, default='''data/token_counts.bert-base-uncased.pickle''', help='''The dump file.'''
			)
			parser.add_argument('''--vocab_size''', default=30_522, type=int)
			_lowerCamelCase       :				Optional[Any]       =			parser.parse_args()

			logger.info(F'Loading data from {args.data_file}')
			with open(args.data_file, '''rb''') as fp:
						_lowerCamelCase       :				Union[str, Any]       =			pickle.load(fp)

			logger.info('''Counting occurrences for MLM.''')
			_lowerCamelCase       :				Any       =			Counter()
			for tk_ids in data:
						counter.update(tk_ids)
			_lowerCamelCase       :				List[Any]       =			[0] * args.vocab_size
			for k, v in counter.items():
						_lowerCamelCase       :				Dict       =			v

			logger.info(F'Dump to {args.token_counts_dump}')
			with open(args.token_counts_dump, '''wb''') as handle:
						pickle.dump(counts, handle, protocol=pickle.HIGHEST_PROTOCOL)







"""simple docstring"""






def 					_A			(__a = 50							) ->       int:
    """simple docstring"""






    SCREAMING_SNAKE_CASE_      :  Tuple    						=		[[0] * 3 for _ in range(length + 1							)]

    for row_length in range(length + 1							):
        for tile_length in range(2    ,				5							):
            for tile_start in range(row_length - tile_length + 1							):
                different_colour_ways_number[row_length][tile_length - 2] += (
                    different_colour_ways_number[row_length - tile_start - tile_length][
                        tile_length - 2
                    ]
                    + 1
                )

    return sum(different_colour_ways_number[length]							)


if __name__ == "__main__":
  print(f'''{solution() = }''')


