<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def multi_stream_iter(client, log_group, streams, positions=None):
 """Iterate over the available events coming from a set of log streams in a single log group interleaving the events from each stream so they're yielded in timestamp order. Args: client (boto3 client):
 The boto client for logs. log_group (str):
 The name of the log group. streams (list of str):
 A list of the log stream names. The position of the stream in this list is the stream number. positions: (list of Positions):
 A list of pairs of (timestamp, skip) which represents the last record read from each stream. Yields: A tuple of (stream number, cloudwatch log event). """

    positions = positions or {s: Position(timestamp=0, skip=0) for s in streams}
    event_iters = [log_stream(client, log_group, s, positions[s].timestamp, positions[s].skip) for s in streams]
    events = []
    for s in event_iters:
        if not s:
            events.append(None)
            continue
        try:
            events.append(next(s))
        except StopIteration:
            events.append(None)

    while some(events):
        i = argmin(events, lambda x: x['timestamp'] if x else 9999999999)
        yield (i, events[i])
        try:
            events[i] = next(event_iters[i])
        except StopIteration:
            events[i] = None