N Producers and M consumers.
Push(seq num, Payload);
Push need not have consecutive keys. But keys pushed are monotonically increasing.
Payload Pull(num);
Pull can be for any seq number.
If the seq number is not found, return the payload for the immediate next higher number. If none exists, return null.
Container has fixed amount of memory.
Once an item is pulled, its unavailable for other pulls and can be discarded by the container.
When container is full, you can delete lowest sequence numbers.
Requirement: Push and Pull have to be O(1) in time.