





'''simple docstring'''






def 				_a	(					_lowerCamelCase   )   ->							bool:



			"""simple docstring"""


			__snake_case				:			Optional[Any]       			=    [list(_lowerCamelCase   ) for row in matrix]
			if matrix and isinstance(_lowerCamelCase						,  _lowerCamelCase   ):
						if isinstance(matrix[0]						,  _lowerCamelCase   ):
									__snake_case				:			str       			=    0
									for row in matrix:
												if prev_len == 0:
															__snake_case				:			Dict       			=    len(_lowerCamelCase   )
															__snake_case				:			List[Any]       			=    True
												else:
															__snake_case				:			Union[str, Any]       			=    prev_len == len(_lowerCamelCase   )
						else:
									__snake_case				:			List[Any]       			=    True
			else:
						__snake_case				:			List[str]       			=    False

			return result







def 				_a	(					_lowerCamelCase   )   ->							None:



			"""simple docstring"""


			if check_matrix(_lowerCamelCase   ) and len(_lowerCamelCase   ) > 0:
						__snake_case				:			List[str]       			=    [list(_lowerCamelCase   ) for row in a]
						__snake_case				:			Optional[Any]       			=    len(_lowerCamelCase   )
						if isinstance(a[0]						,  _lowerCamelCase   ):
									__snake_case				:			Tuple       			=    len(a[0]   )
						else:
									for dat in a:
												print(_lowerCamelCase   )
									return

						# horizotal printing increasing
						for i in range(0						,  _lowerCamelCase   ):
									print(a[0][i]   )
						# vertical printing down
						for i in range(1						,  _lowerCamelCase   ):
									print(a[i][mat_col - 1]   )
						# horizotal printing decreasing
						if mat_row > 1:
									for i in range(mat_col - 2						,  -1						,  -1   ):
												print(a[mat_row - 1][i]   )
        # vertical printing up
						for i in range(mat_row - 2						,  0						,  -1   ):
									print(a[i][0]   )
						__snake_case				:			Union[str, Any]       			=    [row[1 : mat_col - 1] for row in a[1 : mat_row - 1]]
						if len(_lowerCamelCase   ) > 0:
									spiral_print_clockwise(_lowerCamelCase   )
						else:
									return
			else:
						print("""Not a valid matrix"""   )
						return







def 				_a	(					_lowerCamelCase   )   ->							list[int]:



			"""simple docstring"""


			if matrix:
						return list(matrix.pop(0   )   ) + spiral_traversal(list(zip(*_lowerCamelCase   )   )[::-1]   )
			else:
						return []


# driver code
if __name__ == "__main__":
	import doctest

	doctest.testmod()

	__UpperCamelCase										=  [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
	spiral_print_clockwise(a)









'''simple docstring'''






def 				_a	(					_lowerCamelCase   )   ->							bool:



			"""simple docstring"""


			__snake_case				:			Optional[Any]       			=    [list(_lowerCamelCase   ) for row in matrix]
			if matrix and isinstance(_lowerCamelCase						,  _lowerCamelCase   ):
						if isinstance(matrix[0]						,  _lowerCamelCase   ):
									__snake_case				:			str       			=    0
									for row in matrix:
												if prev_len == 0:
															__snake_case				:			Dict       			=    len(_lowerCamelCase   )
															__snake_case				:			List[Any]       			=    True
												else:
															__snake_case				:			Union[str, Any]       			=    prev_len == len(_lowerCamelCase   )
						else:
									__snake_case				:			List[Any]       			=    True
			else:
						__snake_case				:			List[str]       			=    False

			return result







def 				_a	(					_lowerCamelCase   )   ->							None:



			"""simple docstring"""


			if check_matrix(_lowerCamelCase   ) and len(_lowerCamelCase   ) > 0:
						__snake_case				:			List[str]       			=    [list(_lowerCamelCase   ) for row in a]
						__snake_case				:			Optional[Any]       			=    len(_lowerCamelCase   )
						if isinstance(a[0]						,  _lowerCamelCase   ):
									__snake_case				:			Tuple       			=    len(a[0]   )
						else:
									for dat in a:
												print(_lowerCamelCase   )
									return

						# horizotal printing increasing
						for i in range(0						,  _lowerCamelCase   ):
									print(a[0][i]   )
						# vertical printing down
						for i in range(1						,  _lowerCamelCase   ):
									print(a[i][mat_col - 1]   )
						# horizotal printing decreasing
						if mat_row > 1:
									for i in range(mat_col - 2						,  -1						,  -1   ):
												print(a[mat_row - 1][i]   )
        # vertical printing up
						for i in range(mat_row - 2						,  0						,  -1   ):
									print(a[i][0]   )
						__snake_case				:			Union[str, Any]       			=    [row[1 : mat_col - 1] for row in a[1 : mat_row - 1]]
						if len(_lowerCamelCase   ) > 0:
									spiral_print_clockwise(_lowerCamelCase   )
						else:
									return
			else:
						print("""Not a valid matrix"""   )
						return







def 				_a	(					_lowerCamelCase   )   ->							list[int]:



			"""simple docstring"""


			if matrix:
						return list(matrix.pop(0   )   ) + spiral_traversal(list(zip(*_lowerCamelCase   )   )[::-1]   )
			else:
						return []


# driver code
if __name__ == "__main__":
	import doctest

	doctest.testmod()

	__UpperCamelCase										=  [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
	spiral_print_clockwise(a)


