def addSum(no,li,memo={}):
  if no in memo:return memo[no]
  if no==0:return []
  if no<0:return None
  bestsum=None
  
  for l in li:
    remainder=no-l
    remainderlist=addSum(remainder,li,memo)
    if remainderlist!=None:
      
      remainderlist.append(l)
      if bestsum==None or len(remainderlist)<len(bestsum):
        bestsum=remainderlist
      
      
      
  memo[no]=bestsum
  return bestsum
  
print(addSum(130,[5,3,2,10]))

  
   
by