마법 검
시간 제한2초메모리 제한512 MB
n개의 나이가 주어질 때, 각 노드가 최대 두 개의 자식을 가지고 모든 자식이 부모보다 최소 k년 어린 숲을 만들거나, 불가능하면 -1을 출력한다.
문제
НИИЧАВО의 고고학 부서가 고대 플랫랜드의 마법 검을 연구하기로 했다. 보유한 모든 표본을 조사한 결과, 거의 모든 검이 사실 서로의 복제품이라는 사실이 밝혀졌다.
즉, 아주 먼 옛날에 최초의 마법 검이 하나 만들어졌다. 그 뒤로 시간이 흐르면서 장인들은 기존의 마법 검 하나를 골라 그 복제품을 만들곤 했다. 물론 복제품은 원본과 달랐지만, 전반적으로 원본의 특징 일부를 물려받았다.
마법 검의 복제품을 만들면 그 검의 마법력이 약해지므로, 과학자들은 각 검에서 만들어진 복제품이 최대 두 개라는 사실을 알아냈다. 또한 복제품은 원본이 만들어진 뒤 최소 년이 지난 뒤에야 만들 수 있다는 사실도 밝혀졌다.
과학자들은 개의 검을 가지고 있고, 각 검의 나이를 알고 있다. 과학자들은 어느 검이 가장 먼저 만들어졌는지, 그리고 나머지 각 검이 어느 검에서 복제되었는지를 알아내려 한다. 안타깝게도 나이 정보만으로는 이 정보를 유일하게 복원하기에 충분하지 않을 수 있지만, 과학자들은 가능한 경우라면 어느 것이든 만족한다.
입력
첫 번째 줄에는 두 수 과 가 주어진다. 은 과학자들이 가진 검의 수, 는 검에서 복제품을 만들기 위해 필요한 최소 나이다 (, ). 다음 줄에는 개의 수 이 주어지며, ()는 번째 검의 나이다.
출력
각 검에 대해, 그 검이 복제된 원본 검의 번호를 출력한다. 각 검에서 만들어진 복제품은 최대 두 개라는 점에 유의하라.
어떤 검이 최초로 만들어진 검이라면, 그 검에 대해서는 0을 출력한다.
가능한 해가 여러 개라면 아무거나 출력한다.
과학자들이 틀렸고 검의 복제 순서가 존재하지 않는다면, 유일한 수 을 출력한다.