fm = lambda x: [[x[0]]+y for y in fm(x[1:])] + fm(x[1:]) if x else [[]]
def divi(a): for i in range(2,int(sqrt(a))+1): if not a%i: return [i]+divi(a/i) return [a]
def fm(x): return [[x[0]]+y for y in fm(x[1:])] + fm(x[1:]) if x else [[]]