
from __future__ import annotations

from functools import lru_cache
from math import ceil

lowercase__          =100

lowercase__          =set(range(3, NUM_PRIMES, 2))
primes.add(2)
lowercase__          =42

for prime in range(3, ceil(NUM_PRIMES**0.5), 2):
  if prime not in primes:
    continue
  primes.difference_update(set(range(prime * prime, NUM_PRIMES, prime)))




@lru_cache(maxsize=1_0_0  )
def        __UpperCamelCase					(    lowerCAmelCase__							:    int  ):






 if number_to_partition < 0:
  return set()
 elif number_to_partition == 0:
  return {1}

 __a			:  set[int]		    =  set()
 __a			:  int
 __a			:  int

 for prime in primes:
  if prime > number_to_partition:
   continue
  for sub in partition(number_to_partition - prime  ):
   ret.add(sub * prime  )

 return ret




def        __UpperCamelCase					(    lowerCAmelCase__							:    int = 5_0_0_0  ):






 for number_to_partition in range(1  ,       _lowercase  ):
  if len(partition(_lowercase  )  ) > number_unique_partitions:
   return number_to_partition
 return None


if __name__ == "__main__":
  print(F"""{solution() = }""")


def        __UpperCamelCase					(    lowerCAmelCase__							:    str  ,       lowerCAmelCase__							:    str  ):
 __a			:  Any		    =  len(lowerCAmelCase__  )
 __a			:  Union[str, Any]		    =  []
 for i in range(len(lowerCAmelCase__  ) - pat_len + 1  ):
  __a			:  List[Any]		    =  True
  for j in range(lowerCAmelCase__  ):
   if s[i + j] != pattern[j]:
    __a			:  Union[str, Any]		    =  False
    break
  if match_found:
   position.append(lowerCAmelCase__  )
 return position


if __name__ == "__main__":
      assert naive_pattern_search('ABCDEFG', 'DE') == [3]
      print(naive_pattern_search('ABAAABCDBBABCDDEBCABC', 'ABC'))
