직접 고르는 계산
시간 제한2초메모리 제한512 MB
사용 가능한 숫자와 정확히 W번의 덧셈 또는 곱셈을 한 자리 수에서 왼쪽부터 차례로 적용해 각 목표값에 도달할 수 있는지 판정한다.
문제
워털루에 가 본 적이 있다면 거위를 본 적이 있을 것이다. 그런데 계산기로 거위를 만들어 낼 수 있을까? 에서 시작해 을 더하고, 을 곱하고, 을 곱하고, 을 더하고, 을 곱하고, 마지막으로 을 곱하면 이 된다. 이 계산기를 거꾸로 뒤집으면 gEESE라고 읽힌다.

이런 장난을 자동으로 만들어 주는 프로그램을 작성하려고 한다. 그런데 이 계산기는 고장 난 버튼이 많다. 아직 작동하는 연산자는 와 뿐이고, 숫자 키도 일부만 눌린다. 목표 값이 주어졌을 때, 한 자리 숫자 입력과 정해진 횟수의 연산만으로 반쯤 고장 난 계산기가 그 값에 도달할 수 있는지 판단하라.
참고: 이 계산기는 연산자를 입력하는 즉시 계산을 수행하며, 일반적인 연산 우선순위를 따르지 않는다. 예를 들어 는 왼쪽부터 차례로 계산되어 이 되고, 가 되지 않는다.
입력
첫째 줄에는 반드시 사용해야 하는 연산의 횟수 가 주어진다 ().
둘째 줄에는 작동하는 숫자 키의 개수 가 주어진다 ().
이어지는 개의 줄에는 각각 작동하는 숫자가 하나씩 주어진다. 이 숫자들은 부터 까지의 서로 다른 정수이다.
그다음 줄에는 목표 값의 개수 가 주어진다 ().
이어지는 개의 줄에는 각각 이상 이하의 정수가 하나씩 주어지며, 이는 계산기에 나타나게 하고 싶은 목표 값이다.
출력
목표 값마다 한 줄씩, 모두 개의 줄을 출력한다. 각 목표 값에 대해, 개의 주어진 숫자로 정확히 번의 연산을 사용해 그 값에 도달할 수 있으면 Y를, 도달할 수 없으면 N을 출력한다.
정확히 말하면, 목표 값 는 다음과 같이 도달할 수 있으면 가능한 것이다: 개의 숫자 중 하나에서 시작하여, 그 숫자들 중 하나를 더하거나 곱하는 연산을 정확히 번 수행해 에 도달하는 경우이다. 숫자는 여러 번 다시 사용할 수 있고, 모든 숫자를 사용할 필요는 없다. 여러 자리 수를 한 번에 입력할 수는 없다.