Question: 
Write a function to find the nth super ugly number from a given prime list of size k using heap queue algorithm.


Model's Code:
import heapq

def nth_super_ugly_number(n, primes):
    heap = []
    heapq.heappush(heap, 1)
    seen = {1}
    
    ugly = 1
    for _ in range(n):
        ugly = heapq.heappop(heap)
        for prime in primes:
            new_ugly = ugly * prime
            if new_ugly not in seen:
                seen.add(new_ugly)
                heapq.heappush(heap, new_ugly)
    return ugly



Sample Correct Code:
import heapq
def nth_super_ugly_number(n, primes):
    uglies = [1]
    def gen(prime):
        for ugly in uglies:
            yield ugly * prime
    merged = heapq.merge(*map(gen, primes))
    while len(uglies) < n:
        ugly = next(merged)
        if ugly != uglies[-1]:
            uglies.append(ugly)
    return uglies[-1]


Asserts:
assert nth_super_ugly_number(12,[2,7,13,19])==32
assert nth_super_ugly_number(10,[2,7,13,19])==26
assert nth_super_ugly_number(100,[2,7,13,19])==5408


Tests:
Test 1 of 3: PASS
Test 2 of 3: PASS
Test 3 of 3: PASS

Test 843 of 974: 647/843 (76.74970344009489%): success