'''simple docstring'''


from __future__ import annotations

from collections.abc import Iterable, Iterator
from dataclasses import dataclass

snake_case__					:      str				      =  (3, 9, -11, 0, 7, 5, 1, -1)
snake_case__					:      Any				      =  (4, 6, 2, 0, 8, 10, 3, -2)






@dataclass
class 					__SCREAMING_SNAKE_CASE						:







  '''simple docstring'''






  lowerCamelCase_		:int
  lowerCamelCase_		:Node | None







class 					__SCREAMING_SNAKE_CASE						:







  '''simple docstring'''






  def __init__(			self				,		snake_case_						):




       '''simple docstring'''

       UpperCAmelCase_							:       Node | None       =				None
       for i in sorted(snake_case_				,		reverse=snake_case_						):
            UpperCAmelCase_							:       Any       =				Node(snake_case_				,		self.head						)


  def __iter__(			self						):




       '''simple docstring'''

       UpperCAmelCase_							:       Dict       =				self.head
       while node:
            yield node.data
            UpperCAmelCase_							:       Any       =				node.next_node


  def __len__(			self						):




       '''simple docstring'''

       return sum(1 for _ in self						)






  def __str__(			self						):




       '''simple docstring'''

       return " -> ".join([str(snake_case_						) for node in self]						)







def  _lowerCamelCase   (				lowerCamelCase_ :							SortedLinkedList     ,					lowerCamelCase_ :							SortedLinkedList       ):



     """simple docstring"""





     return SortedLinkedList(list(lowerCamelCase_       ) + list(lowerCamelCase_       )       )


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 snake_case__					:      Optional[int]				      =  SortedLinkedList
 print(merge_lists(SSL(test_data_odd), SSL(test_data_even)))



'''simple docstring'''


snake_case__					:      Optional[Any]				      =  tuple[float, float, float]
snake_case__					:      Tuple				      =  tuple[float, float, float]


def  _lowerCamelCase   (				lowerCamelCase_ :							Pointad     ,					lowerCamelCase_ :							Pointad       ):



     """simple docstring"""





     UpperCAmelCase_							:       Any       =				end_pointa[0] - end_pointa[0]
     UpperCAmelCase_							:       Optional[Any]       =				end_pointa[1] - end_pointa[1]
     UpperCAmelCase_							:       Any       =				end_pointa[2] - end_pointa[2]
     return (x, y, z)


def  _lowerCamelCase   (				lowerCamelCase_ :							Vectorad     ,					lowerCamelCase_ :							Vectorad       ):



     """simple docstring"""





     UpperCAmelCase_							:       Optional[Any]       =				ab[1] * ac[2] - ab[2] * ac[1]  # *i
     UpperCAmelCase_							:       Optional[Any]       =				(ab[0] * ac[2] - ab[2] * ac[0]) * -1  # *j
     UpperCAmelCase_							:       Dict       =				ab[0] * ac[1] - ab[1] * ac[0]  # *k
     return (x, y, z)


def  _lowerCamelCase   (				lowerCamelCase_ :							Vectorad     ,					lowerCamelCase_ :							int       ):



     """simple docstring"""





     return tuple(round(lowerCamelCase_     ,					lowerCamelCase_       ) for x in vector       ) == (0, 0, 0)





def  _lowerCamelCase   (				lowerCamelCase_ :							Pointad     ,					lowerCamelCase_ :							Pointad     ,					lowerCamelCase_ :							Pointad     ,					lowerCamelCase_ :							int = 10       ):



     """simple docstring"""





     UpperCAmelCase_							:       List[str]       =				create_vector(lowerCamelCase_     ,					lowerCamelCase_       )
     UpperCAmelCase_							:       List[Any]       =				create_vector(lowerCamelCase_     ,					lowerCamelCase_       )
     return is_zero_vector(get_ad_vectors_cross(lowerCamelCase_     ,					lowerCamelCase_       )     ,					lowerCamelCase_       )






