def vsota(s, n):
    """Poišči podseznam seznama števil s, da bo njihova vsota enaka n."""
    if n == 0:
        return []
    elif len(s) == 0:
        return None
    else:
        x = s[0]
        r = vsota(s[1:], n - x)
        if r is not None:
            return (r + [x])
        else:
            return vsota(s[1:], n)

def vsota2(s, n):
    """Poišči vse podsezname seznama števil s, da bo njihova vsota enaka n."""
    if n == 0:
        return [[]] # ena rešitev, namreč []
    elif len(s) == 0:
        return [] # nobene rešitve
    else:
        x = s[0]
        r1 = vsota2(s[1:], n - x) # rešitve, ki dajo vsoto n - x
        r1 = [t + [x] for t in r1] # rešitvam iz r1 dodamo x
        r2 = vsota2(s[1:], n) # rešitve, ki dajo vsoto n
        return (r1 + r2)
