만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

등식

시간 제한3초메모리 제한1024 MB

요약
숫자열 사이에 등호를 정확히 k개 넣고 덧셈(또는 곱셈) 기호를 적절히 넣어, 나뉜 모든 블록의 값을 m으로 나눈 나머지가 같게 만드는 문제입니다.
난이도

보통10점 중 7점

유형
동적 계획법, 정수론, 문자열
정답자
아직 제출이 없습니다

문제

패딩턴은 매일 마멀레이드를 얼마나 끓일지 계산해야 하므로 산술을 잘해야 합니다. 요즘 수감자가 아주 많으니까요!

오늘 카스텟이 패딩턴에게 수학 과제를 여러 개 주었습니다. 각 과제에는 nn개의 숫자로 이루어진 수열 a1a2...ana_1 a_2 ... a_n이 주어집니다. 즉, 모든 ii에 대해 0≤ai≤90 \le a_i \le 9입니다. 수열과 함께 두 수 kk와 mm이 주어집니다.

패딩턴은 인접한 숫자 쌍 사이 일부에 덧셈, 곱셈, 또는 등호 기호를 넣어, mm에 대한 나머지 기준으로 올바른 식을 만들어야 합니다. 등호는 정확히 kk개를 써야 합니다. 인접한 숫자 사이에 기호를 넣지 않을 수도 있으며, 이 경우 그 숫자들은 하나의 수로 붙습니다.

카스텟은 다음과 같이 과제를 검사합니다. 먼저 사이에 등호가 없는 연속된 숫자 묶음을 하나의 수로 합칩니다. 숫자 b1,b2,...,blb_1, b_2, ..., b_l이 합쳐지면 그 수는 b1⋅10l−1+b2⋅10l−2+...+blb_1 \cdot 10^{l-1} + b_2 \cdot 10^{l-2} + ... + b_l이 됩니다. 그 다음 식을 등호 기준으로 나눠 블록을 만듭니다. 블록은 정확히 k+1k+1개여야 하며, 그렇지 않으면 과제가 인정되지 않습니다. 각 블록의 값을 계산하고, 모든 값을 mm으로 나눈 나머지가 같으면 과제가 완료됩니다. 카스텟은 너그럽게 채점하므로 앞에 0이 붙은 수도 허용됩니다.

과제는 두 가지 난이도로 나뉩니다. 1단계 과제에서는 덧셈과 등호 기호만 쓸 수 있습니다. 2단계 과제에서는 곱셈 기호도 추가로 쓸 수 있습니다.

입력

첫 줄에는 과제의 수 qq가 정수 하나로 주어집니다 (1≤q≤10001 \le q \le 1000). 각 과제는 두 줄로 설명됩니다.

과제의 첫 줄에는 정수 네 개 nn, kk, mm, tt가 주어집니다. 각각 숫자열의 길이, 사용할 등호의 개수, 나머지를 비교할 수, 난이도를 뜻합니다 (1≤k<n≤2001 \le k < n \le 200, 1≤m≤10001 \le m \le 1000, 1≤t≤21 \le t \le 2). t=1t = 1이면 덧셈과 등호 기호만 쓸 수 있습니다. t=2t = 2이면 곱셈 기호도 쓸 수 있습니다.

둘째 줄에는 공백 없이 이어 쓴 숫자 nn개 aia_i가 주어집니다 (0≤ai≤90 \le a_i \le 9).

출력

각 과제마다 답을 한 줄에 하나씩 출력합니다.

해가 없으면 Fail이라는 단어 하나만 출력합니다.

해가 있으면 원래 숫자열의 알맞은 위치에 필요한 덧셈, 곱셈, 등호 기호를 넣어 출력합니다. 식 안에는 구분 기호를 출력하지 마세요. 해가 여러 개라면 그중 아무거나 출력하면 됩니다.

예제1

  1. 예제 1

    입력
    8
    5 2 3 1
    98212
    2 1 9 1
    33
    4 1 10 1
    3538
    3 1 12 2
    532
    5 2 2 1
    43673
    5 1 10 2
    68076
    5 1 100 1
    38608
    5 1 4 2
    71166
    
    예상 출력
    Fail
    3=3
    35+3=8
    5=3+2
    43=67=3
    68*07=6
    Fail
    711*6=6