어린이 생일 파티에 가 본 사람이라면 다음과 같은 장면을 본 적이 있을 것이다.
부모: 자, 얘들아, 마실 건 뭘로 할래?
Coke(콜라), 아니면chocolate milk(초코 우유)?Jamie: 콜라요.
John: 저는 콜라 싫어요.
Mary: John이 마시는 걸로 할래요.
Barry: 윽! 걔가 그걸 마신다면 저는 안 마실래요.
… 등등.
큰 파티다. 1000명을 초대했고 거의 그 인원이 올 수도 있다. 모두를 만족시킬 수 있을까?
입력은 여러 개의 테스트 케이스로 이루어질 수 있다. 각 테스트 케이스의 첫 줄에는 만족시켜야 하는 요청의 개수를 나타내는 정수 $N$이 주어진다. 이어지는 $N$개의 줄에는 각각 하나의 요청이 주어지며, 요청은 다음 다섯 가지 형식 중 하나이다.
<person> wants <drink>
<person> hates <drink>
<person> wants same as <person>
<person> wants different from <person>
<person> wants <drink> if <person> gets <drink>
<person>은 사람의 이름으로, 최대 20개의 소문자 알파벳으로 이루어진다. <drink>는 Coke 또는 chocolate milk 중 하나이다.
각 요청의 의미는 다음과 같다.
<person> wants <drink>: 그 사람은 반드시 그 음료를 받아야 한다.<person> hates <drink>: 그 사람은 그 음료를 받아서는 안 된다(즉 다른 음료를 받는다).A wants same as B: A와 B는 같은 음료를 받아야 한다.A wants different from B: A와 B는 서로 다른 음료를 받아야 한다.A wants X if B gets Y: 만약 B가 Y를 받으면, A는 반드시 X를 받아야 한다.입력의 끝은 $N$의 값이 0인 줄로 표시된다.
각 테스트 케이스에 대해, 모두를 만족시키는 것이 가능하면 사람마다 한 줄씩, 이름의 알파벳 순서로 다음 형식으로 출력한다.
<person> gets <drink>
모두를 만족시키는 방법이 여러 가지라면, 이름의 알파벳 순서대로 잔을 채우되 선택의 여지가 있을 때마다 Coke를 따른다(더 싸기 때문이다). 즉 이 규칙으로 유일하게 정해지는 배정을 출력한다.
모두를 만족시키는 것이 불가능하면 다음 한 줄을 출력한다.
Everybody gets water
연속한 두 테스트 케이스의 출력 사이에는 빈 줄을 하나 넣어 구분한다.