






# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from pathlib import Path

import torch

from ...utils import is_npu_available, is_xpu_available
from .config_args import ClusterConfig, default_json_config_file
from .config_utils import SubcommandHelpFormatter


snake_case__   :						Any													=   """Create a default config file for Accelerate with only a few flags set."""






def      _snake_case     (__lowercase="no"     ,   __lowercase = default_json_config_file     ,   __lowercase = False):
   UpperCamelCase_						=  Path(__lowercase)
   path.parent.mkdir(parents=__lowercase     ,   exist_ok=__lowercase)
   if path.exists():
      print(
          f"""Configuration already exists at {save_location}, will not override. Run `accelerate config` manually or pass a different `save_location`.""")
      return False
   UpperCamelCase_						=  mixed_precision.lower()
   if mixed_precision not in ["no", "fp16", "bf16", "fp8"]:
      raise ValueError(
          f"""`mixed_precision` should be one of 'no', 'fp16', 'bf16', or 'fp8'. Received {mixed_precision}""")
   UpperCamelCase_						=  {
       'compute_environment': 'LOCAL_MACHINE',
       'mixed_precision': mixed_precision,
   }
   if torch.cuda.is_available():
      UpperCamelCase_						=  torch.cuda.device_count()
      UpperCamelCase_						=  num_gpus
      UpperCamelCase_						=  False
      if num_gpus > 1:
         UpperCamelCase_						=  'MULTI_GPU'
      else:
         UpperCamelCase_						=  'NO'
   elif is_xpu_available() and use_xpu:
      UpperCamelCase_						=  torch.xpu.device_count()
      UpperCamelCase_						=  num_xpus
      UpperCamelCase_						=  False
      if num_xpus > 1:
         UpperCamelCase_						=  'MULTI_XPU'
      else:
         UpperCamelCase_						=  'NO'
   elif is_npu_available():
      UpperCamelCase_						=  torch.npu.device_count()
      UpperCamelCase_						=  num_npus
      UpperCamelCase_						=  False
      if num_npus > 1:
         UpperCamelCase_						=  'MULTI_NPU'
      else:
         UpperCamelCase_						=  'NO'
   else:
      UpperCamelCase_						=  0
      UpperCamelCase_						=  True
      UpperCamelCase_						=  1
      UpperCamelCase_						=  'NO'
   UpperCamelCase_						=  ClusterConfig(**__lowercase)
   config.to_json_file(__lowercase)
   return path






def      _snake_case     (__lowercase     ,   __lowercase):
   UpperCamelCase_						=  parser.add_parser('default'     ,   parents=__lowercase     ,   help=__lowercase     ,   formatter_class=__lowercase)
   parser.add_argument(
       '--config_file'     ,   default=__lowercase     ,   help=(
           'The path to use to store the config file. Will default to a file named default_config.yaml in the cache '
           'location, which is the content of the environment `HF_HOME` suffixed with \'accelerate\', or if you don\'t have '
           'such an environment variable, your cache directory (\'~/.cache\' or the content of `XDG_CACHE_HOME`) suffixed '
           'with \'huggingface\'.'
       )     ,   dest='save_location'     ,   )

   parser.add_argument(
       '--mixed_precision'     ,   choices=['no', 'fp16', 'bf16']     ,   type=__lowercase     ,   help='Whether or not to use mixed precision training. '
       'Choose between FP16 and BF16 (bfloat16) training. '
       'BF16 training is only supported on Nvidia Ampere GPUs and PyTorch 1.10 or later.'     ,   default='no'     ,   )
   parser.set_defaults(func=__lowercase)
   return parser






def      _snake_case     (__lowercase):
   UpperCamelCase_						=  write_basic_config(args.mixed_precision     ,   args.save_location)
   if config_file:
      print(f"""accelerate configuration saved at {config_file}""")













def      _snake_case     (__lowercase):
   UpperCamelCase_						=  1
   for i in range(1     ,   num + 1):
      fact *= i
   return fact






def      _snake_case     (__lowercase):
   UpperCamelCase_						=  0
   while number > 0:
      UpperCamelCase_						=  number % 10
      sum_of_digits += last_digit
      UpperCamelCase_						=  number // 10  # Removing the last_digit from the given number
   return sum_of_digits






def      _snake_case     (__lowercase = 100):
   UpperCamelCase_						=  factorial(__lowercase)
   UpperCamelCase_						=  split_and_add(__lowercase)
   return result


if __name__ == "__main__":
 print(solution(int(input("""Enter the Number: """).strip())))





