




'''simple docstring'''





def      __a     (       _UpperCamelCase:   str   )						->			str:

     """simple docstring"""




     _snake_case							=				0

     # if input_string is "aba" than new_input_string become "a|b|a"
     _snake_case							=				""
     _snake_case							=				""

     # append each character + "|" in new_string for range(0, length-1)
     for i in input_string[: len(_UpperCamelCase   ) - 1]:
          new_input_string += i + "|"
     # append last character
     new_input_string += input_string[-1]

     # we will store the starting and ending of previous furthest ending palindromic
     # substring
     _snake_case							, _snake_case							=				0, 0

     # length[i] shows the length of palindromic substring with center i
     _snake_case							=				[1 for i in range(len(_UpperCamelCase   )   )]

     # for each character in new_string find corresponding palindromic string
     _snake_case							=				0
     for j in range(len(_UpperCamelCase   )   ):
          _snake_case							=				1 if j > r else min(length[l + r - j] // 2 ,						r - j + 1   )
          while (
              j - k >= 0
              and j + k < len(_UpperCamelCase   )
              and new_input_string[k + j] == new_input_string[j - k]
          ):
               k += 1

          _snake_case							=				2 * k - 1

          # does this string is ending after the previously explored end (that is r) ?
          # if yes the update the new r to the last index of this
          if j + k - 1 > r:
               _snake_case							=				j - k + 1  # noqa: E741
               _snake_case							=				j + k - 1

          # update max_length and start position
          if max_length < length[j]:
               _snake_case							=				length[j]
               _snake_case							=				j

    # create that string
     _snake_case							=				new_input_string[start - max_length // 2 : start + max_length // 2 + 1]
     for i in s:
          if i != "|":
               output_string += i

     return output_string


if __name__ == "__main__":
   import doctest

   doctest.testmod()








'''simple docstring'''





from __future__ import annotations

from typing import Any





def      __a     (       _UpperCamelCase:   list[Any]   )						->			None:

     """simple docstring"""




     create_state_space_tree(_UpperCamelCase ,						[] ,						0   )





def      __a     (       _UpperCamelCase:   list[Any] ,						_UpperCamelCase:   list[Any] ,						_UpperCamelCase:   int   )						->			None:

     """simple docstring"""




     if index == len(_UpperCamelCase   ):
          print(_UpperCamelCase   )
          return

     create_state_space_tree(_UpperCamelCase ,						_UpperCamelCase ,						index + 1   )
     current_subsequence.append(sequence[index]   )
     create_state_space_tree(_UpperCamelCase ,						_UpperCamelCase ,						index + 1   )
     current_subsequence.pop()


if __name__ == "__main__":
   UpperCamelCase_						:      list[Any]       =						[3, 1, 2, 4]
   generate_all_subsequences(seq)

   seq.clear()
   seq.extend(['''A''', '''B''', '''C'''])
   generate_all_subsequences(seq)


