





import math

import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute



def 		A_    (					_lowerCAmelCase = 3					)						->			qiskit.result.counts.Counts:
 if isinstance(_lowerCAmelCase							,       _lowerCAmelCase					):
  raise TypeError("number of qubits must be a integer."					)
 if number_of_qubits <= 0:
  raise ValueError("number of qubits must be > 0."					)
 if math.floor(_lowerCAmelCase					) != number_of_qubits:
  raise ValueError("number of qubits must be exact integer."					)
 if number_of_qubits > 10:
  raise ValueError("number of qubits too large to simulate(>10)."					)

 UpperCamelCase     : Optional[int]	     =       QuantumRegister(_lowerCAmelCase							,       "qr"					)
 UpperCamelCase     : Optional[Any]	     =       ClassicalRegister(_lowerCAmelCase							,       "cr"					)

 UpperCamelCase     : List[Any]	     =       QuantumCircuit(_lowerCAmelCase							,       _lowerCAmelCase					)

 UpperCamelCase     : int	     =       number_of_qubits

 for i in range(_lowerCAmelCase					):
  quantum_circuit.h(number_of_qubits - i - 1					)
  counter -= 1
  for j in range(_lowerCAmelCase					):
   quantum_circuit.cp(np.pi / 2 ** (counter - j)							,       _lowerCAmelCase							,       _lowerCAmelCase					)

 for k in range(number_of_qubits // 2					):
  quantum_circuit.swap(_lowerCAmelCase							,       number_of_qubits - k - 1					)

 # measure all the qubits
 quantum_circuit.measure(_lowerCAmelCase							,       _lowerCAmelCase					)
 # simulate with 10000 shots
 UpperCamelCase     : List[Any]	     =       Aer.get_backend("qasm_simulator"					)
 UpperCamelCase     : str	     =       execute(_lowerCAmelCase							,       _lowerCAmelCase							,       shots=1_0000					)

 return job.result().get_counts(_lowerCAmelCase					)


if __name__ == "__main__":
    print(
        f"""Total count for quantum fourier transform state is: \
    {quantum_fourier_transform(3)}"""
    )







import os



def 		A_    (					)						->			int:
 UpperCamelCase     : List[str]	     =       os.path.dirname(os.path.realpath(_lowerCAmelCase					)					)
 UpperCamelCase     : Any	     =       os.path.join(_lowerCAmelCase							,       "triangle.txt"					)

 with open(_lowerCAmelCase					) as f:
  UpperCamelCase     : Optional[Any]	     =       f.readlines()

 UpperCamelCase     : Tuple	     =       []
 for line in triangle:
  UpperCamelCase     : List[str]	     =       []
  for number in line.strip().split(" "					):
   numbers_from_line.append(int(_lowerCAmelCase					)					)
  a.append(_lowerCAmelCase					)

 for i in range(1							,       len(_lowerCAmelCase					)					):
  for j in range(len(a[i]					)					):
   UpperCamelCase     : List[Any]	     =       a[i - 1][j] if j != len(a[i - 1]					) else 0
   UpperCamelCase     : Dict	     =       a[i - 1][j - 1] if j > 0 else 0
   a[i][j] += max(_lowerCAmelCase							,       _lowerCAmelCase					)
 return max(a[-1]					)


if __name__ == "__main__":
    print(solution())
