
def 					lowerCamelCase__		(				_lowerCamelCase			,		_lowerCamelCase  )						->bool:
 _UpperCAmelCase 				=len(UpperCamelCase__  )
 _UpperCAmelCase 				=[[False] * (required_sum + 1) for _ in range(arr_len + 1  )]

 # for each arr value, a sum of zero(0) can be formed by not taking any element
 # hence True/1
 for i in range(arr_len + 1  ):
  _UpperCAmelCase 				=True

 # sum is not zero and set is empty then false
 for i in range(1			,		required_sum + 1  ):
  _UpperCAmelCase 				=False

 for i in range(1			,		arr_len + 1  ):
  for j in range(1			,		required_sum + 1  ):
   if arr[i - 1] > j:
    _UpperCAmelCase 				=subset[i - 1][j]
   if arr[i - 1] <= j:
    _UpperCAmelCase 				=subset[i - 1][j] or subset[i - 1][j - arr[i - 1]]

 return subset[arr_len][required_sum]


if __name__ == "__main__":
       import doctest

       doctest.testmod()












import itertools
import math


def       UpperCamelCase__(			UpperCamelCase__     :			int    )->bool:

       if 1 < number < 4:
              # 2 and 3 are primes
              return True
       elif number < 2 or number % 2 == 0 or number % 3 == 0:
              # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
              return False

       # All primes number are in format of 6k +/- 1
       for i in range(5					,	int(math.sqrt(UpperCamelCase__    ) + 1    )					,	6    ):
              if number % i == 0 or number % (i + 2) == 0:
                     return False
       return True


def       UpperCamelCase__(			)->Tuple:
       A__		   =		2
       while True:
              if is_prime(UpperCamelCase__    ):
                     yield num
              num += 1


def       UpperCamelCase__(			UpperCamelCase__     :			int = 1_00_01    )->int:
       return next(itertools.islice(prime_generator()					,	nth - 1					,	UpperCamelCase__    )    )


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





