text: # Recursive Python3 program for
  # coin change problem.
  
  # Returns the count of ways we can sum
  # S[0...m-1] coins to get sum n
  def count(S, m, n ):
  
  	# If n is 0 then there is 1
  	# solution (do not include any coin)
  	if (n == 0):
  		return 1
  
  	# If n is less than 0 then no
  	# solution exists
  	if (n < 0):
  		return 0;
  
  	# If there are no coins and n
  	# is greater than 0, then no
  	# solution exist
  	if (m <=0 and n >= 1):
  		return 0
  
  	# count is sum of solutions (i)
  	# including S[m-1] (ii) excluding S[m-1]
  	return count( S, m - 1, n ) + count( S, m, n-S[m-1] );
  
  # Driver program to test above function
  arr = [1, 2, 3]
  m = len(arr)
  print(count(arr, m, 4))
  
  