Ili

일부 OR 게이트의 출력값이 주어진 회로에서, 입력선 값을 어떻게 정하든 값이 하나로 고정되는 게이트 출력을 모두 찾아 표시한다.

보통7그래프DFS구현수학면접 대비아직 제출이 없습니다시간 제한4초메모리 제한1024 MB

문제

미르코는 작업실에서 간단한 논리 회로를 만들고 있다. 회로는 x1,x2,,xnx_1, x_2, \ldots, x_n으로 표시하는 시작 전선 nn개와 c1,c2,,cmc_1, c_2, \ldots, c_m으로 표시하는 OR 논리 소자 mm개로 이루어진다. 각 소자에는 입력이 정확히 두 개, 출력이 하나 있다. 각 입력은 시작 전선 xjx_j 또는 다른 소자 cjc_j의 출력에 연결된다. 물론 논리 회로에는 사이클이 없으며, 더 나아가 cjc_j의 입력은 i<ji < j일 때만 cic_i의 출력에 연결될 수 있다.

회로의 각 시작 전선에는 값 0 또는 1을 줄 수 있다. 각 소자의 출력값은 두 입력의 논리 OR 연산 결과이다. 즉 두 입력값이 모두 0이면 0이고, 그렇지 않으면 1이다.

미르코는 시작 전선의 값을 모르지만, 꼼꼼히 측정해서 일부 소자의 출력값을 알아냈다. 측정 결과를 바탕으로 유일하게 결정할 수 있는 나머지 출력값을 모두 구하시오.

입력

첫째 줄에 시작 전선의 수 nn과 소자의 수 mm이 양의 정수로 주어진다.

둘째 줄에 정확히 mm글자인 문자열이 주어진다. jj번째 글자는 측정한 소자 cjc_j의 출력값이며, 미르코가 그 값을 측정하지 않았다면 ?이다.

다음 mm개의 줄 중 jj번째 줄에는 소자 cjc_j의 두 입력 레이블이 주어진다. 각 레이블은 시작 전선을 뜻하는 xi 꼴(1in1 \le i \le n)이거나 소자를 뜻하는 ci 꼴(1i<j1 \le i < j)이다. 소자 cjc_j의 두 입력은 같을 수도 있다. 측정값은 서로 모순되지 않는다고 가정해도 좋다.

출력

첫째 줄에 mm글자인 문자열을 출력한다. jj번째 글자는 cjc_j의 출력값이어야 하고, 그 값을 유일하게 결정할 수 없다면 ?이어야 한다.