MiniEgg MiniGame

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

문제

아인(AIN)이는 MiniEgg NFT(미니에그 NFT)를 홍보하기 위해 간단한 미니게임을 만들고 있다. 이 미니게임은 메타버스에서 여러 사람이 함께 협동하여 진행하는 턴제 게임으로, 메타버스에 순간적으로 나타나는 미니에그를 얻어 최대한 많은 점수를 모으는 것이 목적이다.

이 게임의 메타버스는 N×MN \times M 크기의 격자이다. 먼저, 격자의 위에서 xx번째, 왼쪽에서 yy번째에 있는 칸을 (x,y)(x,y)로 나타내자.

게임에는 총 KK명의 사람이 참가하며, 각자 11번부터 KK번까지의 번호가 붙어 있다. ii번 사람은 게임이 시작될 때 칸 (x_i,y_i)(x\_i, y\_i) 위에 있다.

게임이 진행되는 동안 메타버스에는 총 EE개의 미니에그가 나타난다. 각 미니에그에는 11번부터 EE번까지 번호가 붙어 있으며, jj번 미니에그는 st_jst\_j번째 턴이 시작될 때 칸 (sx_j,sy_j)(sx\_j, sy\_j)에 나타나고 그 턴이 끝날 때 격자에서 사라진다.

만약 어떤 미니에그가 나타났을 때 그 칸에 사람이 있었다면, 그 사람은 이 미니에그를 얻을 수 있다. jj번 미니에그를 얻으면 pt_jpt\_j점을 얻을 수 있지만, 미니에그에는 신비로운 힘이 있어서 미니에그를 얻은 사람은 격자 위에서 사라지고 et_jet\_j번째 턴이 끝날 때 칸 (ex_j,ey_j)(ex\_j, ey\_j)로 다시 돌아오게 된다.

게임은 총 TT턴 동안 진행되며, 매 턴이 시작되면 격자 위에 있는 사람들은 각자 적절한 커맨드를 선택해야 한다. 사람들이 선택할 수 있는 커맨드는 다음과 같다.

  • 가만히 있기(P) : 아무것도 하지 않고 현재 위치에 가만히 있는다.
  • 위로 움직이기(U) : 칸 (x,y)(x,y)에 있을 때 칸 (x1,y)(x-1,y)로 이동한다.
  • 아래로 움직이기(D) : 칸 (x,y)(x,y)에 있을 때 칸 (x+1,y)(x+1,y)로 이동한다.
  • 왼쪽으로 움직이기(L) : 칸 (x,y)(x,y)에 있을 때 칸 (x,y1)(x,y-1)로 이동한다.
  • 오른쪽으로 움직이기(R) : 칸 (x,y)(x,y)에 있을 때 칸 (x,y+1)(x,y+1)로 이동한다.
  • 미니에그 얻기(M) : 현재 위치에 미니에그가 있을 때 그 미니에그를 얻는다. 다만 미니에그가 있다고 해서 반드시 이 커맨드를 선택해야 하는 것은 아니다.

격자 위에 있는 사람들이 모두 커맨드를 선택하고 나면, 모두가 각자 선택한 커맨드를 따라 동시에 행동한 뒤 턴이 끝난다. 다만 사람들이 선택한 커맨드에 오류가 있다면 아무도 행동할 수 없고 턴이 진행되지 않는다. 따라서 사람들은 서로 협력하여 오류가 발생하지 않도록 커맨드를 선택해야 한다.

오류란 사람들이 각자 선택한 커맨드에 따라 행동할 때 다음과 같은 상황이 발생하는 경우를 말한다.

  • 어떤 사람이 격자 밖으로 이동한다.
  • 어떤 두 사람이 인접한 칸에서 서로 마주보는 방향으로 이동해 충돌이 일어난다.
  • 턴이 끝났을 때, 즉, 격자 위에 있던 사람들이 모두 행동을 마치고, 이번 턴에 격자로 돌아오게 되는 미니에그를 얻었던 사람들이 예정된 위치로 돌아왔을 때 두 명 이상의 사람이 한 칸에 있게 된다.
  • 어떤 사람이 미니에그를 얻을 때, 현재 격자 위에 없거나 마찬가지로 이번 턴에 미니에그를 얻는 다른 사람과 같은 턴에 같은 칸으로 돌아오게 된다.
  • 어떤 사람이 미니에그가 없는 칸에서 미니에그를 얻으려고 한다.

게임의 초기 설정을 모두 마친 아인이는 이 게임에서 사람들이 어떻게 행동해야 최고 점수를 얻을 수 있는지 궁금해졌다. 아인이를 도와주자.

입력

첫 번째 줄에 격자의 크기를 나타내는 두 정수 NNMM, 게임을 진행하는 사람의 수 KK, 게임 중에 나타나는 미니에그의 수 EE, 게임이 진행되는 턴 수 TT가 주어진다.

다음 KK개의 줄에는 각 사람이 게임을 시작하는 칸의 위치가 주어진다. ii번째 줄에는 두 정수 x_i,y_ix\_i,y\_i가 주어지며, ii번 사람이 칸 (x_i,y_i)(x\_i,y\_i)에서 게임을 시작함을 나타낸다.

다음 EE개의 줄에는 각 미니에그의 정보가 주어진다. jj번째 줄에는 일곱 정수 st_j,sx_j,sy_j,et_j,ex_j,ey_j,pt_jst\_j, sx\_j, sy\_j, et\_j, ex\_j, ey\_j, pt\_j가 주어진다. 이는 jj번 미니에그가 st_jst\_j번째 턴이 시작될 때 칸 (sx_j,sy_j)(sx\_j, sy\_j)에 나타나며, 이 미니에그를 얻으면 pt_jpt\_j점을 얻고, 이 미니에그를 얻은 사람은 et_jet\_j번째 턴이 끝날 때 칸 (ex_j,ey_j)(ex\_j, ey\_j)으로 다시 돌아오게 됨을 나타낸다.

출력

첫 번째 줄에 얻을 수 있는 총점의 최대치를 출력한다.

다음 KK개의 줄에는 해당 점수를 얻기 위해 각 사람들이 선택할 커맨드 나열의 예시를 하나 출력한다. ii번째 줄에는 ii번 사람의 커맨드 나열을 LRUDPM-의 일곱 종류의 문자로 이루어진 길이가 TT인 문자열로 출력해야 한다. 출력하는 문자열의 tt번째 문자는 그 사람이 tt번째 턴에 선택하는 커맨드이다.

-를 제외한 각 문자의 의미는 문제에서 설명된 것과 같으며, -는 그 사람이 그 턴의 커맨드를 선택하는 시점에 격자 위에 없음을 의미한다.

제한

  • 1N,M101 \leq N, M \leq 10
  • 1Kmin(10,N×M)1 \leq K \leq \min(10, N \times M)
  • 1E100,0001 \leq E \leq 100\\,000
  • 1T1,0001 \leq T \leq 1\\,000
  • 1x_iN1 \leq x\_i \leq N
  • 1y_iM1 \leq y\_i \leq M
  • 같은 (x_i,y_i)(x\_i, y\_i)가 여러 번 등장하지 않는다.
  • 1st_jet_jT1 \leq st\_j \leq et\_j \leq T
  • 1sx_j,ex_jN1 \leq sx\_j, ex\_j \leq N
  • 1sy_j,ey_jM1 \leq sy\_j, ey\_j \leq M
  • 1pt_j1,000,000,0001 \leq pt\_j \leq 1\\,000\\,000\\,000
  • 같은 시점, 같은 위치에 여러 미니에그가 나타나지 않는다. 즉, 같은 (st_j,sx_j,sy_j)(st\_j, sx\_j, sy\_j)가 여러 번 등장하지 않는다.