


import doctest
from collections import deque

import numpy as np







class lowerCAmelCase_						:

 '''simple docstring'''

 def __init__(     self ):
       snake_case_	=				[2, 1, 2, -1]
       snake_case_	=				[1, 2, 3, 4]





 def 						UpperCamelCase__					(     self ):
       snake_case_	=				len(self.first_signal )
       snake_case_	=				len(self.second_signal )

       snake_case_	=				max(_UpperCAmelCase		,				_UpperCAmelCase )

       # create a zero matrix of max_length x max_length
       snake_case_	=				[[0] * max_length for i in range(_UpperCAmelCase )]

       # fills the smaller signal with zeros to make both signals of same length
       if length_first_signal < length_second_signal:
             self.first_signal += [0] * (max_length - length_first_signal)
       elif length_first_signal > length_second_signal:
             self.second_signal += [0] * (max_length - length_second_signal)
       for i in range(_UpperCAmelCase ):
             snake_case_	=				deque(self.second_signal )
             rotated_signal.rotate(_UpperCAmelCase )
             for j, item in enumerate(_UpperCAmelCase ):
                   matrix[i][j] += item

        # multiply the matrix with the first signal
       snake_case_	=				np.matmul(np.transpose(_UpperCAmelCase )		,				np.transpose(self.first_signal ) )

       # rounding-off to two decimal places
       return [round(_UpperCAmelCase		,				2 ) for i in final_signal]


if __name__ == "__main__":
   doctest.testmod()



def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )->  int:




      """simple docstring"""

      return x if y == 0 else greatest_common_divisor(SCREAMING_SNAKE_CASE , x % y )






def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )->  int:




      """simple docstring"""

      return (x * y) // greatest_common_divisor(SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )






def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE = 20 )->  int:




      """simple docstring"""

      snake_case_	=				1
      for i in range(1 , n + 1 ):
            snake_case_	=				lcm(SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )
      return g


if __name__ == "__main__":
   print(f'''{solution() = }''')