class Node():
def __init__(self, value, next_node = None, prev_node = None):
self.value = value
self.next_node = next_node
self.prev_node = prev_node
n, k = map(int, input().split())
head = Node('?')
tail = Node('?')
head.next_node = tail
tail.prev_node = head
cur = head
for _ in range(1, n - 1):
new = Node('?')
cur.next_node = new
new.prev_node = cur
cur = new
cur.next_node = tail
tail.prev_node = cur
head.prev_node = tail
tail.next_node = head
move = []
for _ in range(k):
step, value = input().split()
step = int(step)
move.append((step, value))
cur = head
use_value = set()
valid = True
for step, value in move:
# 시계 방향으로 step만큼 이동
# cur = cur.next_node
for _ in range(step):
cur = cur.prev_node
# 이미 들어와있는 경우에 다른 값이 들어온 경우 or 아직 값이 없지만 이미 사용된 경우
if (cur.value != '?' and cur.value != value) or (cur.value == '?' and value in use_value):
valid = False
break
if cur.value == '?':
cur.value = value
use_value.add(value)
if valid:
for _ in range(n):
print(cur.value, end='')
cur = cur.next_node
else:
print('!')
PREVIOUS[백준] 색종이 만들기