fracs=[(1<<(sum(functools.reduce)operator.mul,(1<<math.gcd(t,li)for li in l),1)for t in range(1,w+1)//w),functools.reduce(operator.mul,(j**c*math.factorial(c)for j in range(1,max(l,default=0)+1)for c in(sum(li==j for li in l),),1))for l in partition(n)for w in(math.lcm(*l),)]