
import math

class 		__magic_name__				:


  """simple docstring"""





  def __init__(					self	,		a__		):
    _lowerCamelCase      =						len(__UpperCamelCase		)
    _lowerCamelCase      =						[0] * (
        4 * self.N
    )  # approximate the overall size of segment tree with array N
    self.build(1	,		0	,		self.N - 1		)


  def     _UpperCAmelCase  (					self	,		a__		):
    return idx * 2


  def     _UpperCAmelCase  (					self	,		a__		):
    return idx * 2 + 1


  def     _UpperCAmelCase  (					self	,		a__	,		a__	,		a__		):  # noqa: E741
    if l == r:
      _lowerCamelCase      =						A[l]
    else:
      _lowerCamelCase      =						(l + r) // 2
      self.build(self.left(__UpperCamelCase		)	,		__UpperCamelCase	,		__UpperCamelCase		)
      self.build(self.right(__UpperCamelCase		)	,		mid + 1	,		__UpperCamelCase		)
      _lowerCamelCase      =						max(self.st[self.left(__UpperCamelCase		)]	,		self.st[self.right(__UpperCamelCase		)]		)


  def     _UpperCAmelCase  (					self	,		a__	,		a__	,		a__		):
    return self.update_recursive(1	,		0	,		self.N - 1	,		a - 1	,		b - 1	,		__UpperCamelCase		)


  def     _UpperCAmelCase  (					self	,		a__	,		a__	,		a__	,		a__	,		a__	,		a__		):  # noqa: E741
    if r < a or l > b:
      return True
    if l == r:
      _lowerCamelCase      =						val
      return True
    _lowerCamelCase      =						(l + r) // 2
    self.update_recursive(self.left(__UpperCamelCase		)	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase		)
    self.update_recursive(self.right(__UpperCamelCase		)	,		mid + 1	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase		)
    _lowerCamelCase      =						max(self.st[self.left(__UpperCamelCase		)]	,		self.st[self.right(__UpperCamelCase		)]		)
    return True


  def     _UpperCAmelCase  (					self	,		a__	,		a__		):
    return self.query_recursive(1	,		0	,		self.N - 1	,		a - 1	,		b - 1		)


  def     _UpperCAmelCase  (					self	,		a__	,		a__	,		a__	,		a__	,		a__		):  # noqa: E741
    if r < a or l > b:
      return -math.inf
    if l >= a and r <= b:
      return self.st[idx]
    _lowerCamelCase      =						(l + r) // 2
    _lowerCamelCase      =						self.query_recursive(self.left(__UpperCamelCase		)	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase		)
    _lowerCamelCase      =						self.query_recursive(self.right(__UpperCamelCase		)	,		mid + 1	,		__UpperCamelCase	,		__UpperCamelCase	,		__UpperCamelCase		)
    return max(__UpperCamelCase	,		__UpperCamelCase		)


  def     _UpperCAmelCase  (					self		):
    _lowerCamelCase      =						[]
    for i in range(1	,		N + 1		):
      show_list += [self.query(__UpperCamelCase	,		__UpperCamelCase		)]
    print(__UpperCamelCase		)


if __name__ == "__main__":
  _UpperCAmelCase    			=					[1, 2, -4, 7, 3, -5, 6, 11, -20, 9, 14, 15, 5, 2, -8]
  _UpperCAmelCase    			=					15
  _UpperCAmelCase    			=					SegmentTree(A)
  print(segt.query(4, 6))
  print(segt.query(7, 11))
  print(segt.query(7, 12))
  segt.update(1, 3, 111)
  print(segt.query(1, 15))
  segt.update(7, 8, 235)
  segt.show_data()






"""simple docstring"""




import argparse
import os


A__   :						Any 							=     {
    """pytorch""": {
        """1.13""": {
            """torch""": """1.13.1""",
            """torchvision""": """0.14.1""",
            """torchaudio""": """0.13.1""",
            """python""": 3.9,
            """cuda""": """cu116""",
            """install""": (
                """python3 -m pip install --no-cache-dir -U torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1"""
                """ --extra-index-url https://download.pytorch.org/whl/cu116"""
            ),
            """base_image""": """nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04""",
        },
        """1.12""": {
            """torch""": """1.12.1""",
            """torchvision""": """0.13.1""",
            """torchaudio""": """0.12.1""",
            """python""": 3.9,
            """cuda""": """cu113""",
            """install""": (
                """python3 -m pip install --no-cache-dir -U torch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1"""
                """ --extra-index-url https://download.pytorch.org/whl/cu113"""
            ),
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """1.11""": {
            """torch""": """1.11.0""",
            """torchvision""": """0.12.0""",
            """torchaudio""": """0.11.0""",
            """python""": 3.9,
            """cuda""": """cu113""",
            """install""": (
                """python3 -m pip install --no-cache-dir -U torch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0"""
                """ --extra-index-url https://download.pytorch.org/whl/cu113"""
            ),
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """1.10""": {
            """torch""": """1.10.2""",
            """torchvision""": """0.11.3""",
            """torchaudio""": """0.10.2""",
            """python""": 3.9,
            """cuda""": """cu113""",
            """install""": (
                """python3 -m pip install --no-cache-dir -U torch==1.10.2 torchvision==0.11.3 torchaudio==0.10.2"""
                """ --extra-index-url https://download.pytorch.org/whl/cu113"""
            ),
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        # torchaudio < 0.10 has no CUDA-enabled binary distributions
        """1.9""": {
            """torch""": """1.9.1""",
            """torchvision""": """0.10.1""",
            """torchaudio""": """0.9.1""",
            """python""": 3.9,
            """cuda""": """cu111""",
            """install""": (
                """python3 -m pip install --no-cache-dir -U torch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1"""
                """ --extra-index-url https://download.pytorch.org/whl/cu111"""
            ),
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
    },
    """tensorflow""": {
        """2.11""": {
            """tensorflow""": """2.11.1""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.11.1""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """2.10""": {
            """tensorflow""": """2.10.1""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.10.1""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """2.9""": {
            """tensorflow""": """2.9.3""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.9.3""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """2.8""": {
            """tensorflow""": """2.8.2""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.8.2""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """2.7""": {
            """tensorflow""": """2.7.3""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.7.3""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """2.6""": {
            """tensorflow""": """2.6.5""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.6.5""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
        """2.5""": {
            """tensorflow""": """2.5.3""",
            """install""": """python3 -m pip install --no-cache-dir -U tensorflow==2.5.3""",
            """base_image""": """nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04""",
        },
    },
}


if __name__ == "__main__":
    A__   :						str 							=     argparse.ArgumentParser("""Choose the framework and version to install""")
    parser.add_argument(
        """--framework""", help="""The framework to install. Should be `torch` or `tensorflow`""", type=str, required=True
    )
    parser.add_argument("""--version""", help="""The version of the framework to install.""", type=str, required=True)
    A__   :						Any 							=     parser.parse_args()

    A__   :						List[Any] 							=     past_versions_testing[args.framework][args.version]

    os.system(f"""echo \"export INSTALL_CMD=\'{info["install"]}\'\" >> ~/.profile""")
    print(f"""echo \"export INSTALL_CMD=\'{info["install"]}\'\" >> ~/.profile""")

    A__   :						Any 							=     """"""
    if args.framework == "pytorch":
        A__   :						str 							=     info["""cuda"""]
    os.system(f"""echo \"export CUDA='{cuda}'\" >> ~/.profile""")
    print(f"""echo \"export CUDA='{cuda}'\" >> ~/.profile""")



