```python
def pick_lane(queues: list, closed: list) -> int:
    if not queues or not all(isinstance(q, int) and q >= 0 for q in queues):
        raise ValueError("Invalid queue lengths")
    if not all(isinstance(c, int) and 0 <= c < len(queues) for c in closed):
        raise ValueError("Invalid closed lane indices")
    if all(i in closed for i in range(len(queues))):
        raise ValueError("All lanes are closed")

    best = None
    for lane in range(len(queues)):
        if lane not in closed:
            if best is None or queues[lane] < queues[best]:
                best = lane
            elif queues[lane] == queues[best]:
                best = min(best, lane)

    return best
```