






'''simple docstring'''
from typing import TYPE_CHECKING

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


a_					=	{
    'configuration_xlm_roberta': [
        'XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'XLMRobertaConfig',
        'XLMRobertaOnnxConfig',
    ],
}

try:
  if not is_sentencepiece_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a_					=	['XLMRobertaTokenizer']

try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a_					=	['XLMRobertaTokenizerFast']

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a_					=	[
      'XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST',
      'XLMRobertaForCausalLM',
      'XLMRobertaForMaskedLM',
      'XLMRobertaForMultipleChoice',
      'XLMRobertaForQuestionAnswering',
      'XLMRobertaForSequenceClassification',
      'XLMRobertaForTokenClassification',
      'XLMRobertaModel',
      'XLMRobertaPreTrainedModel',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a_					=	[
      'TF_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST',
      'TFXLMRobertaForCausalLM',
      'TFXLMRobertaForMaskedLM',
      'TFXLMRobertaForMultipleChoice',
      'TFXLMRobertaForQuestionAnswering',
      'TFXLMRobertaForSequenceClassification',
      'TFXLMRobertaForTokenClassification',
      'TFXLMRobertaModel',
      'TFXLMRobertaPreTrainedModel',
  ]

try:
  if not is_flax_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a_					=	[
      'FLAX_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST',
      'FlaxXLMRobertaForMaskedLM',
      'FlaxXLMRobertaForCausalLM',
      'FlaxXLMRobertaForMultipleChoice',
      'FlaxXLMRobertaForQuestionAnswering',
      'FlaxXLMRobertaForSequenceClassification',
      'FlaxXLMRobertaForTokenClassification',
      'FlaxXLMRobertaModel',
      'FlaxXLMRobertaPreTrainedModel',
  ]

if TYPE_CHECKING:
  from .configuration_xlm_roberta import (
      XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP,
      XLMRobertaConfig,
      XLMRobertaOnnxConfig,
  )

  try:
    if not is_sentencepiece_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_xlm_roberta import XLMRobertaTokenizer

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_xlm_roberta_fast import XLMRobertaTokenizerFast

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_xlm_roberta import (
        XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
        XLMRobertaForCausalLM,
        XLMRobertaForMaskedLM,
        XLMRobertaForMultipleChoice,
        XLMRobertaForQuestionAnswering,
        XLMRobertaForSequenceClassification,
        XLMRobertaForTokenClassification,
        XLMRobertaModel,
        XLMRobertaPreTrainedModel,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_xlm_roberta import (
        TF_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFXLMRobertaForCausalLM,
        TFXLMRobertaForMaskedLM,
        TFXLMRobertaForMultipleChoice,
        TFXLMRobertaForQuestionAnswering,
        TFXLMRobertaForSequenceClassification,
        TFXLMRobertaForTokenClassification,
        TFXLMRobertaModel,
        TFXLMRobertaPreTrainedModel,
    )

  try:
    if not is_flax_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_flax_xlm_roberta import (
        FLAX_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
        FlaxXLMRobertaForCausalLM,
        FlaxXLMRobertaForMaskedLM,
        FlaxXLMRobertaForMultipleChoice,
        FlaxXLMRobertaForQuestionAnswering,
        FlaxXLMRobertaForSequenceClassification,
        FlaxXLMRobertaForTokenClassification,
        FlaxXLMRobertaModel,
        FlaxXLMRobertaPreTrainedModel,
    )

else:
  import sys

  a_					=	_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)








'''simple docstring'''
from decimal import Decimal, getcontext
from math import ceil, factorial





def 	_a(					UpperCamelCase__			:  int							):




      '''simple docstring'''






      if not isinstance(UpperCamelCase__,		UpperCamelCase__							):
            raise TypeError('''Undefined for non-integers'''							)
      elif precision < 1:
            raise ValueError('''Undefined for non-natural numbers'''							)

      SCREAMING_SNAKE_CASE__       :			Optional[Any]													=precision
      SCREAMING_SNAKE_CASE__       :			int													=ceil(precision / 1_4							)
      SCREAMING_SNAKE_CASE__       :			int													=4_2_6_8_8_0 * Decimal(1_0_0_0_5							).sqrt()
      SCREAMING_SNAKE_CASE__       :			Tuple													=1
      SCREAMING_SNAKE_CASE__       :			Any													=1_3_5_9_1_4_0_9
      SCREAMING_SNAKE_CASE__       :			List[Any]													=Decimal(UpperCamelCase__							)
      for k in range(1,		UpperCamelCase__							):
            SCREAMING_SNAKE_CASE__       :			str													=factorial(6 * k							) // (factorial(3 * k							) * factorial(UpperCamelCase__							) ** 3)
            linear_term += 5_4_5_1_4_0_1_3_4
            exponential_term *= -2_6_2_5_3_7_4_1_2_6_4_0_7_6_8_0_0_0
            partial_sum += Decimal(multinomial_term * linear_term							) / exponential_term
      return str(constant_term / partial_sum							)[:-1]


if __name__ == "__main__":
  a_					=	5_0
  print(F'''The first {n} digits of pi is: {pi(n)}''')