게임 쇼 수식
시간 제한2초메모리 제한128 MB
주어진 수 사이에 +, -, *, /를 순서대로 넣어 왼쪽부터 계산한 값이 목표에 도달하게 만들고, 가장 사전순으로 앞선 식이나 NO EXPRESSION을 출력한다.
문제
어느 텔레비전 게임 쇼에는 참가자에게 양의 정수 수열과 목표 정수 하나를 주는 코너가 있습니다. 참가자는 수열의 모든 수를 정확히 한 번씩 사용하여, 연산자 +, -, *, / 로 이어 붙인 하나의 수식을 만들어야 합니다. 각 연산자는 몇 번이든(0번 포함) 쓸 수 있습니다.
수식은 연산자 우선순위를 무시하고 왼쪽에서 오른쪽으로 차례대로 계산하며, 그 결과가 목표 값과 같아야 합니다.
수식은 다음 세 가지 규칙을 지켜야 합니다.
- 수는 입력에 등장한 순서 그대로 나타나야 합니다.
- 나눗셈
/은 나누어떨어질 때(나머지가 0일 때)만 쓸 수 있습니다. - 각 연산자를 적용한 뒤의 중간 결과는 항상 이상 이하의 정수여야 합니다.
입력
첫째 줄에 테스트 케이스의 수 이 주어집니다.
이어지는 개의 각 줄은 하나의 테스트 케이스입니다. 각 줄은 수열에 포함된 수의 개수 () 로 시작하고, 그 뒤에 개의 양의 정수가, 마지막에 목표 정수가 옵니다. 수열에는 중복된 수가 있을 수 있습니다.
출력
각 테스트 케이스마다 한 줄을 출력합니다.
목표 값을 만드는 수식이 하나라도 있으면, 그 수식 뒤에 = 와 목표 값을 붙여 공백 없이 출력합니다 (예: 5+7/4=3). 수식에는 개의 수와 개의 연산자가 모두 포함되어야 합니다. 목표 값을 만드는 수식이 여러 개일 수 있으므로, 그중 사전순으로 가장 앞서는(문자열로 비교했을 때 가장 작은) 수식을 출력합니다.
가능한 수식이 없으면 NO EXPRESSION 을 출력합니다.