

_SCREAMING_SNAKE_CASE  :						Optional[Any]         =    [0, 2, 4, 6, 8]
_SCREAMING_SNAKE_CASE  :						List[str]         =    [1, 3, 5, 7, 9]
def        UpperCAmelCase_     (		_A   ,	_A   ,	_A   ,	_A       ):





     '''simple docstring'''




     if remaining_length == 0:
          if digits[0] == 0 or digits[-1] == 0:
               return 0

          for i in range(length // 2 - 1   ,	-1   ,	-1       ):
               remainder += digits[i] + digits[length - i - 1]

               if remainder % 2 == 0:
                    return 0

               remainder //= 10

          return 1

     if remaining_length == 1:
          if remainder % 2 == 0:
               return 0

          SCREAMING_SNAKE_CASE__					=					0
          for digit in range(10       ):
               SCREAMING_SNAKE_CASE__					=					digit
               result += reversible_numbers(
                   0   ,	(remainder + 2 * digit) // 10   ,	_A   ,	_A       )
          return result

     SCREAMING_SNAKE_CASE__					=					0
     for digita in range(10       ):
          SCREAMING_SNAKE_CASE__					=					digita

          if (remainder + digita) % 2 == 0:
               SCREAMING_SNAKE_CASE__					=					ODD_DIGITS
          else:
               SCREAMING_SNAKE_CASE__					=					EVEN_DIGITS

          for digita in other_parity_digits:
               SCREAMING_SNAKE_CASE__					=					digita
               result += reversible_numbers(
                   remaining_length - 2   ,	(remainder + digita + digita) // 10   ,	_A   ,	_A   ,	)
     return result
def        UpperCAmelCase_     (		_A = 9       ):





     '''simple docstring'''




     SCREAMING_SNAKE_CASE__					=					0
     for length in range(1   ,	max_power + 1       ):
          result += reversible_numbers(_A   ,	0   ,	[0] * length   ,	_A       )
     return result


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





from collections import OrderedDict
from typing import TYPE_CHECKING, Any, List, Mapping, Optional, Union

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import TensorType, logging


if TYPE_CHECKING:
       from ...onnx.config import PatchingSpec
       from ...tokenization_utils_base import PreTrainedTokenizerBase


_SCREAMING_SNAKE_CASE  :						Any         =    logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE  :						List[str]         =    {
    '''allenai/longformer-base-4096''': '''https://huggingface.co/allenai/longformer-base-4096/resolve/main/config.json''',
    '''allenai/longformer-large-4096''': '''https://huggingface.co/allenai/longformer-large-4096/resolve/main/config.json''',
    '''allenai/longformer-large-4096-finetuned-triviaqa''': (
        '''https://huggingface.co/allenai/longformer-large-4096-finetuned-triviaqa/resolve/main/config.json'''
    ),
    '''allenai/longformer-base-4096-extra.pos.embd.only''': (
        '''https://huggingface.co/allenai/longformer-base-4096-extra.pos.embd.only/resolve/main/config.json'''
    ),
    '''allenai/longformer-large-4096-extra.pos.embd.only''': (
        '''https://huggingface.co/allenai/longformer-large-4096-extra.pos.embd.only/resolve/main/config.json'''
    ),
}






class  UpperCAmelCase__	( A__ ):






  """simple docstring"""


  a     =      "longformer"






  def __init__(							self		:	int			,     __lowerCamelCase		:	Union[List[int], int] = 512			,     __lowerCamelCase		:	int = 2			,     __lowerCamelCase		:	int = 1			,     __lowerCamelCase		:	int = 0			,     __lowerCamelCase		:	int = 2			,     __lowerCamelCase		:	int = 3_0522			,     __lowerCamelCase		:	int = 768			,     __lowerCamelCase		:	int = 12			,     __lowerCamelCase		:	int = 12			,     __lowerCamelCase		:	int = 3072			,     __lowerCamelCase		:	str = "gelu"			,     __lowerCamelCase		:	float = 0.1			,     __lowerCamelCase		:	float = 0.1			,     __lowerCamelCase		:	int = 512			,     __lowerCamelCase		:	int = 2			,     __lowerCamelCase		:	float = 0.02			,     __lowerCamelCase		:	float = 1e-12			,     __lowerCamelCase		:	bool = False			,     **__lowerCamelCase		:	Tuple			,     )	->							List[Any]:
       super().__init__(pad_token_id=__lowerCamelCase			,     **__lowerCamelCase      )

       SCREAMING_SNAKE_CASE__					=					attention_window
       SCREAMING_SNAKE_CASE__					=					sep_token_id
       SCREAMING_SNAKE_CASE__					=					bos_token_id
       SCREAMING_SNAKE_CASE__					=					eos_token_id
       SCREAMING_SNAKE_CASE__					=					vocab_size
       SCREAMING_SNAKE_CASE__					=					hidden_size
       SCREAMING_SNAKE_CASE__					=					num_hidden_layers
       SCREAMING_SNAKE_CASE__					=					num_attention_heads
       SCREAMING_SNAKE_CASE__					=					hidden_act
       SCREAMING_SNAKE_CASE__					=					intermediate_size
       SCREAMING_SNAKE_CASE__					=					hidden_dropout_prob
       SCREAMING_SNAKE_CASE__					=					attention_probs_dropout_prob
       SCREAMING_SNAKE_CASE__					=					max_position_embeddings
       SCREAMING_SNAKE_CASE__					=					type_vocab_size
       SCREAMING_SNAKE_CASE__					=					initializer_range
       SCREAMING_SNAKE_CASE__					=					layer_norm_eps
       SCREAMING_SNAKE_CASE__					=					onnx_export






class  UpperCAmelCase__	( A__ ):






  """simple docstring"""


  def __init__(							self		:	Dict			,     __lowerCamelCase		:	"PretrainedConfig"			,     __lowerCamelCase		:	str = "default"			,     __lowerCamelCase		:	"List[PatchingSpec]" = None      )	->							List[str]:
       super().__init__(__lowerCamelCase			,     __lowerCamelCase			,     __lowerCamelCase      )
       SCREAMING_SNAKE_CASE__					=					True






  @property
  def    lowercase_	(							self		:	Optional[Any]      )	->							Mapping[str, Mapping[int, str]]:
       if self.task == "multiple-choice":
            SCREAMING_SNAKE_CASE__					=					{0: '''batch''', 1: '''choice''', 2: '''sequence'''}
       else:
            SCREAMING_SNAKE_CASE__					=					{0: '''batch''', 1: '''sequence'''}
       return OrderedDict(
           [
               ('''input_ids''', dynamic_axis),
               ('''attention_mask''', dynamic_axis),
               ('''global_attention_mask''', dynamic_axis),
           ]      )






  @property
  def    lowercase_	(							self		:	Optional[int]      )	->							Mapping[str, Mapping[int, str]]:
       SCREAMING_SNAKE_CASE__					=					super().outputs
       if self.task == "default":
            SCREAMING_SNAKE_CASE__					=					{0: '''batch'''}
       return outputs






  @property
  def    lowercase_	(							self		:	Optional[int]      )	->							float:
       return 1e-4






  @property
  def    lowercase_	(							self		:	Union[str, Any]      )	->							int:
       # needs to be >= 14 to support tril operator
       return max(super().default_onnx_opset			,     14      )







  def    lowercase_	(							self		:	Dict			,     __lowerCamelCase		:	"PreTrainedTokenizerBase"			,     __lowerCamelCase		:	int = -1			,     __lowerCamelCase		:	int = -1			,     __lowerCamelCase		:	bool = False			,     __lowerCamelCase		:	Optional[TensorType] = None			,     )	->							Mapping[str, Any]:
       SCREAMING_SNAKE_CASE__					=					super().generate_dummy_inputs(
           preprocessor=__lowerCamelCase			,     batch_size=__lowerCamelCase			,     seq_length=__lowerCamelCase			,     is_pair=__lowerCamelCase			,     framework=__lowerCamelCase      )
       import torch

       # for some reason, replacing this code by inputs["global_attention_mask"] = torch.randint(2, inputs["input_ids"].shape, dtype=torch.int64)
       # makes the export fail randomly
       SCREAMING_SNAKE_CASE__					=					torch.zeros_like(inputs['''input_ids''']      )
       # make every second token global
       SCREAMING_SNAKE_CASE__					=					1

       return inputs


