



'''simple docstring'''






def        snake_case_   (	lowerCAmelCase_			,  lowerCAmelCase_						)->						int:





       '''simple docstring'''


       _UpperCAmelCase    :		Optional[int]     	=					1.0
       for i in range(1			,  r + 1						):
              ret *= (n + 1 - i) / i
       return round(lowerCAmelCase_						)




def        snake_case_   (	lowerCAmelCase_						)->						int:





       '''simple docstring'''


       return choose(8 + n			,  lowerCAmelCase_						) + choose(9 + n			,  lowerCAmelCase_						) - 10




def        snake_case_   (	lowerCAmelCase_						)->						int:





       '''simple docstring'''


       return sum(non_bouncy_exact(lowerCAmelCase_						) for i in range(1			,  n + 1						)						)




def        snake_case_   (	lowerCAmelCase_ = 100						)->						int:





       '''simple docstring'''


       return non_bouncy_upto(lowerCAmelCase_						)


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








'''simple docstring'''






from unittest.mock import patch

import datasets
from datasets import Dataset




def        snake_case_   (	)->						str:





       '''simple docstring'''


       _UpperCAmelCase    :		Tuple     	=					Dataset.from_dict({"""col_1""": [3, 2, 0, 1]}						)

       with patch("""tqdm.auto.tqdm"""						) as mock_tqdm:
              datasets.disable_progress_bar()
              dset.map(lambda lowerCAmelCase_						: {"col_2": x["col_1"] + 1}						)
              mock_tqdm.assert_not_called()

              mock_tqdm.reset_mock()

              datasets.enable_progress_bar()
              dset.map(lambda lowerCAmelCase_						: {"col_2": x["col_1"] + 1}						)
              mock_tqdm.assert_called()



