



'''simple docstring'''




from __future__ import annotations

import matplotlib.pyplot as plt  # type: ignore
import numpy

# initial triangle of Koch snowflake
lowerCamelCase							:Tuple       = numpy.array([0, 0])
lowerCamelCase							:Optional[Any]       = numpy.array([0.5, 0.8_660_254])
lowerCamelCase							:Union[str, Any]       = numpy.array([1, 0])
lowerCamelCase							:Tuple       = [VECTOR_1, VECTOR_2, VECTOR_3, VECTOR_1]



def      a      (			lowerCamelCase__						,				lowerCamelCase__   ):
			'''simple docstring'''





			A_     :						List[Any]     =					initial_vectors
			for _ in range(lowerCamelCase__   ):
						A_     :						Any     =					iteration_step(lowerCamelCase__   )
			return vectors



def      a      (			lowerCamelCase__   ):
			'''simple docstring'''





			A_     :						List[str]     =					[]
			for i, start_vector in enumerate(vectors[:-1]   ):
						A_     :						str     =					vectors[i + 1]
						new_vectors.append(lowerCamelCase__   )
						A_     :						str     =					end_vector - start_vector
						new_vectors.append(start_vector + difference_vector / 3   )
						new_vectors.append(
						    start_vector + difference_vector / 3 + rotate(difference_vector / 3						,				60   )   )
						new_vectors.append(start_vector + difference_vector * 2 / 3   )
			new_vectors.append(vectors[-1]   )
			return new_vectors



def      a      (			lowerCamelCase__						,				lowerCamelCase__   ):
			'''simple docstring'''





			A_     :						Optional[int]     =					numpy.radians(lowerCamelCase__   )
			A_,   A_     :						str     =					numpy.cos(lowerCamelCase__   ), numpy.sin(lowerCamelCase__   )
			A_     :						Optional[int]     =					numpy.array(((c, -s), (s, c))   )
			return numpy.dot(lowerCamelCase__						,				lowerCamelCase__   )



def      a      (			lowerCamelCase__   ):
			'''simple docstring'''





			A_     :						Optional[Any]     =					plt.gca()
			axes.set_aspect("""equal"""   )

			# matplotlib.pyplot.plot takes a list of all x-coordinates and a list of all
			# y-coordinates as inputs, which are constructed from the vector-list using
			# zip()
			A_,   A_     :						Optional[int]     =					zip(*lowerCamelCase__   )
			plt.plot(lowerCamelCase__						,				lowerCamelCase__   )
			plt.show()


if __name__ == "__main__":
						import doctest

						doctest.testmod()

						lowerCamelCase							:Optional[Any]       = iterate(INITIAL_VECTORS, 5)
						plot(processed_vectors)




'''simple docstring'''




def      a      (			):
			'''simple docstring'''





			A_     :						Optional[int]     =					[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

			A_     :						Dict     =					6
			A_     :						List[Any]     =					1
			A_     :						Optional[Any]     =					19_01

			A_     :						Tuple     =					0

			while year < 20_01:
						day += 7

						if (year % 4 == 0 and year % 1_00 != 0) or (year % 4_00 == 0):
									if day > days_per_month[month - 1] and month != 2:
												month += 1
												A_     :						Optional[Any]     =					day - days_per_month[month - 2]
									elif day > 29 and month == 2:
												month += 1
												A_     :						str     =					day - 29
						else:
									if day > days_per_month[month - 1]:
												month += 1
												A_     :						List[str]     =					day - days_per_month[month - 2]

						if month > 12:
									year += 1
									A_     :						Tuple     =					1

						if year < 20_01 and day == 1:
									sundays += 1
			return sundays


if __name__ == "__main__":
						print(solution())