




from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_tokenizers_available,
    is_torch_available,
)


UpperCAmelCase__ :     Union[str, Any]				    =    {}

try:
  if not is_sentencepiece_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__ :     Dict				    =    ["""NllbTokenizer"""]

try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__ :     Union[str, Any]				    =    ["""NllbTokenizerFast"""]


if TYPE_CHECKING:
  try:
    if not is_sentencepiece_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_nllb import NllbTokenizer

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_nllb_fast import NllbTokenizerFast

else:
  import sys

  UpperCAmelCase__ :     Optional[int]				    =    _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)







def 					__lowercase      (     _A = 50			)     ->						int:
      SCREAMING_SNAKE_CASE :      Tuple       =   [1] * (length + 1)

      for row_length in range(3						,    length + 1			):
            for block_length in range(3						,    row_length + 1			):
                  for block_start in range(row_length - block_length			):
                        ways_number[row_length] += ways_number[
                            row_length - block_start - block_length - 1
                        ]

                  ways_number[row_length] += 1

      return ways_number[length]


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




