Sangdeok recently bought a lucky wheel. Each slot on the wheel contains one uppercase English letter, and all letters on the wheel are distinct.

No letter appears on the wheel more than once. The wheel rotates only clockwise, and a fixed arrow beside the wheel always points to one slot. As the wheel rotates, the letter indicated by the arrow changes. In the picture above, the arrow points to H.
Sangdeok spins the wheel K times in a row. For each spin, he writes down how many times the letter under the arrow changed and which letter the arrow pointed to when the spin stopped.
Heewon found that record and wants to reconstruct the letters written on the wheel.
Given the number of slots and Sangdeok's record, write a program that determines a possible arrangement of letters on the wheel.
The first line contains the number of slots N and the number of spins K. (2 ≤ N ≤ 25, 1 ≤ K ≤ 100)
Each of the next K lines contains an integer S, the number of times the letter under the arrow changed during that spin, and the uppercase letter that the arrow pointed to after the spin stopped. (1 ≤ S ≤ 100)
Print one line containing the letters on the wheel, starting from the letter indicated by the arrow after the last spin and moving clockwise. Print ? for a slot whose letter cannot be determined.
If no lucky wheel matches the given record, print !.