





import unittest
from timeit import timeit



def _a       (			lowerCamelCase:     int      ,       lowerCamelCase:     int				)			->		int:







      '''simple docstring'''






      __A      =       first_num if first_num >= second_num else second_num
      __A      =       max_num
      while (common_mult % first_num > 0) or (common_mult % second_num > 0):
            common_mult += max_num
      return common_mult



def _a       (			lowerCamelCase:     int      ,       lowerCamelCase:     int				)			->		int:







      '''simple docstring'''






      return b if a == 0 else greatest_common_divisor(b % a      ,       _UpperCamelCase				)



def _a       (			lowerCamelCase:     int      ,       lowerCamelCase:     int				)			->		int:







      '''simple docstring'''






      return first_num // greatest_common_divisor(_UpperCamelCase      ,       _UpperCamelCase				) * second_num



def _a       (			)			->		str:







      '''simple docstring'''






      __A      =       (
          '''from __main__ import least_common_multiple_slow, least_common_multiple_fast'''
      )
      print(
          '''least_common_multiple_slow():'''      ,       timeit('''least_common_multiple_slow(1000, 999)'''      ,       setup=_UpperCamelCase				)      ,       )
      print(
          '''least_common_multiple_fast():'''      ,       timeit('''least_common_multiple_fast(1000, 999)'''      ,       setup=_UpperCamelCase				)      ,       )





class A_      (    unittest.TestCase     ):
   lowerCAmelCase__       =				(
       (10, 20),
       (13, 15),
       (4, 31),
       (10, 42),
       (43, 34),
       (5, 12),
       (12, 25),
       (10, 25),
       (6, 9),
   )
   lowerCAmelCase__       =				(20, 195, 124, 210, 1462, 60, 300, 50, 18)




   def _lowerCAmelCase   (self			:List[Any]				)->      Optional[Any]:



         for i, (first_num, second_num) in enumerate(self.test_inputs				):
               __A      =       least_common_multiple_slow(a_					,     a_				)
               __A      =       least_common_multiple_fast(a_					,     a_				)
               with self.subTest(i=a_				):
                     self.assertEqual(a_					,     self.expected_results[i]				)
                     self.assertEqual(a_					,     self.expected_results[i]				)


if __name__ == "__main__":
       benchmark()
       unittest.main()












from __future__ import annotations



def _a       (			lowerCamelCase:     list[list[int]]      ,       lowerCamelCase:     int      ,       lowerCamelCase:     int      ,       lowerCamelCase:     int | float				)			->		None:







      '''simple docstring'''






      __A     ,		__A      =       m - 1, 0
      while i >= 0 and j < n:
            if key == mat[i][j]:
                  print(F"""Key {key} found at row- {i + 1} column- {j + 1}"""				)
                  return
            if key < mat[i][j]:
                  i -= 1
            else:
                  j += 1
      print(F"""Key {key} not found"""				)



def _a       (			)			->		None:







      '''simple docstring'''






      __A      =       [[2, 5, 7], [4, 8, 13], [9, 11, 15], [12, 17, 20]]
      __A      =       int(input('''Enter the element to be searched:'''				)				)
      print(lowerCamelCase				)
      search_in_a_sorted_matrix(lowerCamelCase      ,       len(lowerCamelCase				)      ,       len(mat[0]				)      ,       lowerCamelCase				)


if __name__ == "__main__":
       import doctest

       doctest.testmod()
       main()





