





import numpy as np


def 	UpperCamelCase__(       UpperCamelCase__			:       Union[str, Any] ,     UpperCamelCase__			:       List[Any] ,     UpperCamelCase__			:       Dict ,     UpperCamelCase__			:       Optional[int] ,     UpperCamelCase__			:       List[str]  )->List[str]:
       A__											=						int(np.ceil((x_end - xa) / h  )  )
       A__											=						np.zeros((n + 1,)  )
       A__											=						ya
       A__											=						xa

       for k in range(UpperCamelCase__  ):
              A__											=						f(UpperCamelCase__ ,     y[k]  )
              A__											=						f(x + 0.5 * h ,     y[k] + 0.5 * h * ka  )
              A__											=						f(x + 0.5 * h ,     y[k] + 0.5 * h * ka  )
              A__											=						f(x + h ,     y[k] + h * ka  )
              A__											=						y[k] + (1 / 6) * h * (ka + 2 * ka + 2 * ka + ka)
              x += h

       return y


if __name__ == "__main__":
       import doctest

       doctest.testmod()












class     SCREAMING_SNAKE_CASE__ :



 def __init__(							self,__lowerCamelCase ):
        A__											=						set_counts
        A__											=						max(__lowerCamelCase )
        A__											=						len(__lowerCamelCase )
        A__											=						[1] * num_sets
        A__											=						list(range(__lowerCamelCase ) )



 def 				UpperCamelCase			(							self,__lowerCamelCase,__lowerCamelCase ):
        A__											=						self.get_parent(__lowerCamelCase )
        A__											=						self.get_parent(__lowerCamelCase )

        if src_parent == dst_parent:
               return False

        if self.ranks[dst_parent] >= self.ranks[src_parent]:
               self.set_counts[dst_parent] += self.set_counts[src_parent]
               A__											=						0
               A__											=						dst_parent
               if self.ranks[dst_parent] == self.ranks[src_parent]:
                      self.ranks[dst_parent] += 1
               A__											=						self.set_counts[dst_parent]
        else:
               self.set_counts[src_parent] += self.set_counts[dst_parent]
               A__											=						0
               A__											=						src_parent
               A__											=						self.set_counts[src_parent]

        A__											=						max(self.max_set,__lowerCamelCase )
        return True




 def 				UpperCamelCase			(							self,__lowerCamelCase ):
        if self.parents[disj_set] == disj_set:
               return disj_set
        A__											=						self.get_parent(self.parents[disj_set] )
        return self.parents[disj_set]





