버스

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

존은 친구를 만나려고 버스 차고지(종점)에 일찍 도착했다. 친구는 나중에 오고 밖은 춥기 때문에, 존은 그냥 기다리는 대신 버스를 타고 노선을 따라 몇 정거장 갔다가 다른 버스로 갈아타고 친구가 오기 전에 차고지로 돌아오려고 한다.

존은 기다리는 총 시간을 최소로 하고 싶다. 이 시간은 다음 세 가지의 합이다.

  • 나가는 버스를 타기 전 차고지에서 기다린 시간,
  • 돌아오는 지점에서 버스를 갈아타려고 기다린 시간,
  • 차고지로 돌아온 뒤 친구를 기다린 시간.

존은 시간을 잘 지키므로 늦으면 안 된다. 즉 친구가 도착하는 시각보다 늦지 않게 차고지로 돌아와야 한다. 도착 시각들과 버스 시간표를 읽어 존이 기다리는 최소 총 시간을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 다섯 정수 t1t_1, t2t_2, mm, n1n_1, n2n_2가 공백 하나로 구분되어 주어진다. 이때 0t1t21090 \le t_1 \le t_2 \le 10^9, 2m10002 \le m \le 1000, n1,n21n_1, n_2 \ge 1, m×(n1+n2)106m \times (n_1 + n_2) \le 10^6이다.

  • t1t_1: 존이 차고지에 도착하는 시각,
  • t2t_2: 친구가 차고지에 도착하는 시각,
  • mm: 차고지를 포함한 노선의 정거장 수,
  • n1n_1: 차고지에서 출발하는 버스의 수,
  • n2n_2: 차고지로 들어오는 버스의 수.

다음 mm개의 줄에는 정거장별 시간표가 정거장 순서대로 주어진다. 정거장 11이 차고지이고, 그다음이 정거장 2,,m2, \dots, m이다. 나가는 버스는 12m1 \to 2 \to \dots \to m 순서로, 들어오는 버스는 m21m \to \dots \to 2 \to 1 순서로 운행한다. 각 정거장의 줄에는 n1+n2n_1 + n_2개의 정수 xijx_{ij} (0xij1090 \le x_{ij} \le 10^9)가 있다. 앞의 n1n_1개는 그 정거장에서 나가는 버스 n1n_1대의 시각이고, 나머지 n2n_2개는 그 정거장에서 들어오는 버스 n2n_2대의 시각이다.

모든 버스는 이웃한 두 정거장 사이를 이동하는 데 최소 11의 시간이 걸린다. 존은 어떤 버스가 그 정거장을 지나는 시각에 그곳에 있어야만 그 정거장에서 그 버스를 탈 수 있다. 한 정거장에서 두 버스가 각각 시각 tat_a, tbt_b에 있을 때, 그 정거장에서 앞 버스에서 뒤 버스로 갈아타는 것은 tatbt_a \le t_b일 때에만 가능하다.

출력

존이 기다려야 하는 최소 총 시간을 정수 하나로 출력한다. 왕복이 가능하고 친구가 도착하기 전에 돌아올 수 있게 하는 버스 조합이 없으면, 존은 차고지에서 내내 기다리므로 답은 t2t1t_2 - t_1이다.

참고

예시에서 최적의 계획은 다음과 같다. 시각 00에 차고지에서 나가는 버스를 타고, 정거장 22에서 내린 뒤, 시각 44에 들어오는 버스로 갈아타서, 시각 99에 차고지로 돌아온다. 기다린 시간은 차고지에서 00, 갈아탈 때 11, 친구를 기다리며 11로 모두 합쳐 22이다.