






from __future__ import annotations

import bisect







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase = 0					,    __lowerCAmelCase = -1			) ->	int:
     if hi < 0:
          UpperCamelCase__			:   Dict       				=  len(__lowerCAmelCase			)

     while lo < hi:
          UpperCamelCase__			:   Dict       				=  lo + (hi - lo) // 2
          if sorted_collection[mid] < item:
               UpperCamelCase__			:   Dict       				=  mid + 1
          else:
               UpperCamelCase__			:   str       				=  mid

     return lo







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase = 0					,    __lowerCAmelCase = -1			) ->	int:
     if hi < 0:
          UpperCamelCase__			:   Optional[Any]       				=  len(__lowerCAmelCase			)

     while lo < hi:
          UpperCamelCase__			:   Optional[Any]       				=  lo + (hi - lo) // 2
          if sorted_collection[mid] <= item:
               UpperCamelCase__			:   List[str]       				=  mid + 1
          else:
               UpperCamelCase__			:   Any       				=  mid

     return lo







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase = 0					,    __lowerCAmelCase = -1			) ->	None:
     sorted_collection.insert(bisect_left(__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase			)					,    __lowerCAmelCase			)







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase = 0					,    __lowerCAmelCase = -1			) ->	None:
     sorted_collection.insert(bisect_right(__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase			)					,    __lowerCAmelCase			)







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase			) ->	int | None:
     UpperCamelCase__			:   str       				=  0
     UpperCamelCase__			:   Any       				=  len(__lowerCAmelCase			) - 1

     while left <= right:
          UpperCamelCase__			:   Optional[int]       				=  left + (right - left) // 2
          UpperCamelCase__			:   Optional[Any]       				=  sorted_collection[midpoint]
          if current_item == item:
               return midpoint
          elif item < current_item:
               UpperCamelCase__			:   Dict       				=  midpoint - 1
          else:
               UpperCamelCase__			:   Union[str, Any]       				=  midpoint + 1
     return None







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase			) ->	int | None:
     UpperCamelCase__			:   List[str]       				=  bisect.bisect_left(__lowerCAmelCase					,    __lowerCAmelCase			)
     if index != len(__lowerCAmelCase			) and sorted_collection[index] == item:
          return index
     return None







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase			) ->	int | None:
     if right < left:
          return None

     UpperCamelCase__			:   Dict       				=  left + (right - left) // 2

     if sorted_collection[midpoint] == item:
          return midpoint
     elif sorted_collection[midpoint] > item:
          return binary_search_by_recursion(__lowerCAmelCase					,    __lowerCAmelCase					,    __lowerCAmelCase					,    midpoint - 1			)
     else:
          return binary_search_by_recursion(__lowerCAmelCase					,    __lowerCAmelCase					,    midpoint + 1					,    __lowerCAmelCase			)


if __name__ == "__main__":
 lowerCamelCase	:							Any				=input('''Enter numbers separated by comma:\n''').strip()
 lowerCamelCase	:							Tuple				=sorted(int(item) for item in user_input.split(''','''))
 lowerCamelCase	:							str				=int(input('''Enter a single number to be found in the list:\n'''))
 lowerCamelCase	:							int				=binary_search(collection, target)
 if result is None:
  print(F"""{target} was not found in {collection}.""")
 else:
  print(F"""{target} was found at position {result} in {collection}.""")







# this script reports modified .py files under the desired list of top-level sub-dirs passed as a list of arguments, e.g.:
#   python ./utils/get_modified_files.py utils src tests examples
#
# it uses git to find the forking point and which files were modified - i.e. files not under git won't be considered
# since the output of this script is fed into Makefile commands it doesn't print a newline after the results

import re
import subprocess
import sys


lowerCamelCase	:							Optional[Any]				=subprocess.check_output('''git merge-base main HEAD'''.split()).decode('''utf-8''')
lowerCamelCase	:							str				=subprocess.check_output(F"""git diff --name-only {fork_point_sha}""".split()).decode('''utf-8''').split()

lowerCamelCase	:							List[Any]				='''|'''.join(sys.argv[1:])
lowerCamelCase	:							str				=re.compile(RF"""^({joined_dirs}).*?\.py$""")

lowerCamelCase	:							Optional[int]				=[x for x in modified_files if regex.match(x)]
print(''' '''.join(relevant_modified_files), end='''''')