무기 대기 줄
시간 제한3초메모리 제한1024 MB
무기상마다 줄에 선 참가자를 순서대로 응대하는 과정을 시뮬레이션합니다. 각 질의에서 특정 시각에 무기상의 방에 있는 참가자 번호를 구하고, 없으면 -1을 출력합니다.
문제
곧 게임이 시작되며, 참가자들은 시작 전에 무기를 받아야 한다.
무기 종류는 가지가 있다. 각 종류의 무기는 정해진 무기장에게서만 받을 수 있다. 참가자는 명이고, 각 참가자는 일부 무기장의 줄에 등록되어 있다. 참가자마다 등록한 무기장에서 머무는 시간이 정해져 있다.
처음 시각에 무기장들이 접수를 시작한다. 각 무기장은 다음 절차를 따른다. 줄에서 다음 참가자를 부른다. 그 참가자가 지금 다른 무기장에 있으면 줄의 맨 뒤로 보내고 과정을 이어 간다. 비어 있는 참가자를 찾을 때까지 이를 반복한다. 찾은 참가자는 주어진 시간만큼 머문 뒤 방을 나가고, 무기장은 같은 절차로 다음 참가자를 부른다.
호출할 때 줄에 비어 있는 참가자가 없으면 무기장은 줄의 누군가가 비어날 때까지 기다린다. 이런 무기장을 대기 중인 무기장이라고 한다.
같은 시각에 여러 무기장이 동시에 호출할 준비가 되면, 마지막 방문자가 나간 시각이 이른 순서로 정렬하고, 시각이 같으면 번호 순서로 정렬한다. 무기장들은 이 순서대로 참가자를 부른다.
대기 중인 무기장이 호출하면, 줄에서 비어 있는 참가자 가운데 번호가 가장 작은 사람을 고른다. 그 참가자가 줄의 맨 앞이 되고, 무기장은 그 참가자를 안으로 부른다.
대기 중이 아닌 무기장이 호출하면, 줄의 순서대로 다음 비어 있는 참가자를 부른다. 그런 참가자가 없으면 이 무기장은 대기 중이 된다.
일부 무기장은 특정 시각에 자기 방에 누가 있을지 알고 싶어 한다. 개의 질문 에 답해야 한다. 질문은 시각 에 무기장 와 함께 있는 참가자 번호를 묻는다.
질문 시각이 호출 시각과 같으면 호출을 먼저 처리한 뒤에 질문에 답한다.
참가자가 무기장 사이를 이동하는 시간과 다음 참가자를 호출하는 데 걸리는 시간은 0이라고 본다.
각 참가자는 한 무기장의 줄에 최대 한 번만 등록되어 있다고 보장한다.
입력
첫 줄에 자연수 , , ()가 주어진다. 각각 참가자 수, 무기장 수, 질문 수이다.
다음 개 줄에는 번 무기장의 방문자 수 ()가 주어지고, 이어서 개의 수 와 가 주어진다. ()는 번 무기장에 처음 줄 순서대로 등록된 참가자 번호이다. ()는 그 참가자가 차례가 되었을 때 번 무기장에서 머무는 시간이다.
다음 개 줄에는 질문 (, )가 주어진다. 무기장 번호와 시각이다.
모든 의 합은 를 넘지 않는다.
출력
개 줄에 질문에 대한 답을 출력한다. 답은 그 시각에 무기장의 방에 있는 참가자 번호이다. 아무도 없으면 을 출력한다.