def simulate_message_queue():
import sys
from collections import defaultdict
# 读取两行输入
line1 = sys.stdin.readline()
line2 = sys.stdin.readline()
# 解析消息
message_data = list(map(int, line1.strip().split()))
messages = []
for i in range(0, len(message_data), 2):
time = message_data[i]
content = message_data[i + 1]
messages.append((time, content))
messages.sort() # 按时间排序
# 解析消费者
consumer_data = list(map(int, line2.strip().split()))
M = len(consumer_data) // 2
consumers = []
for i in range(0, len(consumer_data), 2):
sub_time = consumer_data[i]
unsub_time = consumer_data[i + 1]
consumers.append((sub_time, unsub_time))
# 初始化
active_consumers = [] # 按优先级升序排列,最后一个优先级最高
received_messages = [[] for _ in range(M)]
# 生成所有事件并按时间处理
events = defaultdict(list)
for idx, (sub_time, unsub_time) in enumerate(consumers):
events[sub_time].append(('sub', idx))
events[unsub_time].append(('unsub', idx))
for time, content in messages:
events[time].append(('msg', content))
# 按时间顺序处理事件
for time in sorted(events.keys()):
# 同一时间的事件顺序:sub > unsub > msg
current_events = events[time]
# 先处理订阅
for event in current_events:
if event[0] == 'sub':
_, idx = event
active_consumers.append(idx)
# 再处理取消订阅
for event in current_events:
if event[0] == 'unsub':
_, idx = event
if idx in active_consumers:
active_consumers.remove(idx)
# 最后处理消息
for event in current_events:
if event[0] == 'msg':
_, content = event
if active_consumers:
# 发送给优先级最高的消费者(最后一个)
highest_priority = active_consumers[-1]
received_messages[highest_priority].append(content)
# 输出
for msgs in received_messages:
if msgs:
print(' '.join(map(str, msgs)))
else:
print(-1)
simulate_message_queue()