"""simple docstring"""






class 				snake_case       :




					"""simple docstring"""

					def __init__(				self   :	Optional[int]    ,lowerCamelCase__   :	list[int]			):
									UpperCAmelCase__             =							len(snake_case__			)
									UpperCAmelCase__             =							[0] * len_array

									if len_array > 0:
													UpperCAmelCase__             =							array[0]

									for i in range(1    ,snake_case__			):
													UpperCAmelCase__             =							self.prefix_sum[i - 1] + array[i]







					def 		__lowerCAmelCase						(				self   :	Tuple    ,lowerCamelCase__   :	int    ,lowerCamelCase__   :	int			):


									if start == 0:
													return self.prefix_sum[end]

									return self.prefix_sum[end] - self.prefix_sum[start - 1]







					def 		__lowerCAmelCase						(				self   :	Union[str, Any]    ,lowerCamelCase__   :	int			):
									UpperCAmelCase__             =							{0}
									for sum_item in self.prefix_sum:
													if sum_item - target_sum in sums:
																	return True

													sums.add(snake_case__			)

									return False


if __name__ == "__main__":
						import doctest

						doctest.testmod()





def 			UpperCamelCase					(    __lowerCamelCase     : str				,					__lowerCamelCase     : int    ):
       snake_case       :   list[list[str]]							=      [[] for _ in range(__lowerCamelCase    )]
       snake_case       :   int							=      key - 1

       if key <= 0:
              raise ValueError("Height of grid can't be 0 or negative"    )
       if key == 1 or len(__lowerCamelCase    ) <= key:
              return input_string

       for position, character in enumerate(__lowerCamelCase    ):
              snake_case       :   Any							=      position % (lowest * 2)  # puts it in bounds
              snake_case       :   Optional[int]							=      min(__lowerCamelCase				,					lowest * 2 - num    )  # creates zigzag pattern
              temp_grid[num].append(__lowerCamelCase    )
       snake_case       :   List[str]							=      ["".join(__lowerCamelCase    ) for row in temp_grid]
       snake_case       :   Tuple							=      "".join(__lowerCamelCase    )

       return output_string


def 			UpperCamelCase					(    __lowerCamelCase     : str				,					__lowerCamelCase     : int    ):
       snake_case       :   Dict							=      []
       snake_case       :   Union[str, Any]							=      key - 1

       if key <= 0:
              raise ValueError("Height of grid can't be 0 or negative"    )
       if key == 1:
              return input_string

       snake_case       :   list[list[str]]							=      [[] for _ in range(__lowerCamelCase    )]  # generates template
       for position in range(len(__lowerCamelCase    )    ):
              snake_case       :   List[str]							=      position % (lowest * 2)  # puts it in bounds
              snake_case       :   Optional[int]							=      min(__lowerCamelCase				,					lowest * 2 - num    )  # creates zigzag pattern
              temp_grid[num].append("*"    )

       snake_case       :   Tuple							=      0
       for row in temp_grid:  # fills in the characters
              snake_case       :   Union[str, Any]							=      input_string[counter : counter + len(__lowerCamelCase    )]
              grid.append(list(__lowerCamelCase    )    )
              counter += len(__lowerCamelCase    )

       snake_case       :   str							=      ""  # reads as zigzag
       for position in range(len(__lowerCamelCase    )    ):
              snake_case       :   Optional[int]							=      position % (lowest * 2)  # puts it in bounds
              snake_case       :   Tuple							=      min(__lowerCamelCase				,					lowest * 2 - num    )  # creates zigzag pattern
              output_string += grid[num][0]
              grid[num].pop(0    )
       return output_string


def 			UpperCamelCase					(    __lowerCamelCase     : str    ):
       snake_case       :   Tuple							=      {}
       for key_guess in range(1				,					len(__lowerCamelCase    )    ):  # tries every key
              snake_case       :   Any							=      decrypt(__lowerCamelCase				,					__lowerCamelCase    )
       return results


if __name__ == "__main__":
   import doctest

   doctest.testmod()





