행운의 바퀴
시간 제한1초메모리 제한128 MB
고유한 문자가 적힌 N개 슬롯의 회전판에서 회전 횟수와 도착 문자 기록을 보고 판에 적힌 문자를 복원하거나 불가능함을 판별하는 문제입니다.
문제
상덕이는 최근 행운의 바퀴를 샀다. 바퀴의 각 칸에는 서로 다른 알파벳 대문자가 하나씩 적혀 있다.

바퀴에는 같은 글자가 두 번 이상 등장하지 않는다. 바퀴는 시계 방향으로만 돌아가며, 바퀴 옆의 화살표는 항상 한 위치를 가리킨다. 바퀴가 돌아가면 화살표가 가리키는 글자만 바뀐다. 위 그림에서는 화살표가 H를 가리키고 있다.
상덕이는 바퀴를 연속해서 K번 돌린다. 매번 바퀴를 돌릴 때마다, 화살표가 가리키는 글자가 몇 번 바뀌었는지와 회전을 멈췄을 때 화살표가 가리킨 글자를 종이에 적었다.
희원이는 그 기록을 보고 바퀴에 적힌 알파벳 배치를 알아내려고 한다.
바퀴의 칸 수와 상덕이의 기록이 주어질 때, 가능한 바퀴의 알파벳 배치를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 바퀴의 칸 수 N과 상덕이가 바퀴를 돌린 횟수 K가 주어진다. (2 ≤ N ≤ 25, 1 ≤ K ≤ 100)
다음 K개의 줄에는 각 회전에서 화살표가 가리키는 글자가 몇 번 바뀌었는지를 나타내는 정수 S와, 회전이 끝난 뒤 화살표가 가리킨 알파벳 대문자가 주어진다. (1 ≤ S ≤ 100)
출력
마지막 회전이 끝난 뒤 화살표가 가리키는 문자부터 시작해, 시계 방향으로 바퀴에 적힌 알파벳을 한 줄에 출력한다. 아직 어떤 글자인지 결정할 수 없는 칸은 ?로 출력한다.
주어진 기록과 일치하는 행운의 바퀴가 존재하지 않으면 !를 출력한다.