arr = [1, 2, 2, 3, 5]
target = 8

def comb_sum(arr, current_index, target, result, ans):
    if target == 0:
        print result
        ans.append(result)
        return 0
    if target < 0:
        return 1
    if current_index == len(arr):
        return 1

    result.append(arr[current_index])
    comb_sum(arr, current_index+1, target - arr[current_index], result, ans)
    result.pop()

    comb_sum(arr, current_index+1, target, result, ans)
    return ans



print comb_sum(arr, 0, target, [], [])