




from math import radians as angle_to_radians
from math import sin

# Acceleration Constant on Earth (unit m/s^2)
lowercase_		=							9.8_0_6_6_5







def  lowerCAmelCase  (	UpperCAmelCase,	UpperCAmelCase       )  ->None:






					"""simple docstring"""






					if not isinstance(UpperCAmelCase,	(int, float)       ):
										raise TypeError('''Invalid velocity. Should be a positive number.'''       )

					if not isinstance(UpperCAmelCase,	(int, float)       ):
										raise TypeError('''Invalid angle. Range is 1-90 degrees.'''       )

					# Ensure valid angle
					if angle > 90 or angle < 1:
										raise ValueError('''Invalid angle. Range is 1-90 degrees.'''       )

					# Ensure valid velocity
					if init_velocity < 0:
										raise ValueError('''Invalid velocity. Should be a positive number.'''       )







def  lowerCAmelCase  (	UpperCAmelCase,	UpperCAmelCase       )  ->float:






					"""simple docstring"""






					check_args(UpperCAmelCase,	UpperCAmelCase       )
					__magic_name__					:							Tuple		   =							angle_to_radians(2 * angle       )
					return round(init_velocity**2 * sin(UpperCAmelCase       ) / g,	2       )







def  lowerCAmelCase  (	UpperCAmelCase,	UpperCAmelCase       )  ->float:






					"""simple docstring"""






					check_args(UpperCAmelCase,	UpperCAmelCase       )
					__magic_name__					:							Optional[int]		   =							angle_to_radians(UpperCAmelCase       )
					return round(init_velocity**2 * sin(UpperCAmelCase       ) ** 2 / (2 * g),	2       )







def  lowerCAmelCase  (	UpperCAmelCase,	UpperCAmelCase       )  ->float:






					"""simple docstring"""






					check_args(UpperCAmelCase,	UpperCAmelCase       )
					__magic_name__					:							Any		   =							angle_to_radians(UpperCAmelCase       )
					return round(2 * init_velocity * sin(UpperCAmelCase       ) / g,	2       )







def  lowerCAmelCase  (	)  ->None:






					"""simple docstring"""






					__magic_name__   , __magic_name__					:							List[Any]		   =							25, 20
					assert horizontal_distance(UpperCAmelCase,	UpperCAmelCase       ) == 40.97
					assert max_height(UpperCAmelCase,	UpperCAmelCase       ) == 3.73
					assert total_time(UpperCAmelCase,	UpperCAmelCase       ) == 1.74


if __name__ == "__main__":
				from doctest import testmod

				testmod()

				# Get input from user
				lowercase_		=							float(input('''Initial Velocity: ''').strip())

				# Get input from user
				lowercase_		=							float(input('''angle: ''').strip())

				# Print results
				print()
				print('''Results: ''')
				print(f"Horizontal Distance: {horizontal_distance(init_vel, angle)!s} [m]")
				print(f"Maximum Height: {max_height(init_vel, angle)!s} [m]")
				print(f"Total Time: {total_time(init_vel, angle)!s} [s]")









from typing import Any





class 		A__				:






	def __init__(	self						)      ->   int:




						"""simple docstring"""






						__magic_name__					:							List[str]		   =							[]
						__magic_name__					:							str		   =							0






	def __str__(	self						)      ->   Union[str, Any]:




						"""simple docstring"""






						__magic_name__					:							str		   =							'''<''' + str(self.stack						)[1:-1] + '''>'''
						return printed






	def  lowercase      (	self				,     lowerCamelCase						)      ->   None:




						"""simple docstring"""






						self.stack.append(lowerCamelCase						)
						__magic_name__					:							Tuple		   =							self.length + 1






	def  lowercase      (	self						)      ->   Any:




						"""simple docstring"""






						self.rotate(1						)
						__magic_name__					:							Union[str, Any]		   =							self.stack[self.length - 1]
						__magic_name__					:							Union[str, Any]		   =							self.stack[:-1]
						self.rotate(self.length - 1						)
						__magic_name__					:							List[Any]		   =							self.length - 1
						return dequeued






	def  lowercase      (	self				,     lowerCamelCase						)      ->   None:




						"""simple docstring"""






						for _ in range(lowerCamelCase						):
											__magic_name__					:							str		   =							self.stack[0]
											__magic_name__					:							Optional[Any]		   =							self.stack[1:]
											self.put(lowerCamelCase						)
											__magic_name__					:							List[Any]		   =							self.length - 1






	def  lowercase      (	self						)      ->   Any:




						"""simple docstring"""






						__magic_name__					:							Optional[int]		   =							self.get()
						self.put(lowerCamelCase						)
						self.rotate(self.length - 1						)
						return front






	def  lowercase      (	self						)      ->   int:




						"""simple docstring"""






						return self.length



