Угадай Числа
Джон никогда не был силен в математике. Из-за его плохих оценок родители отправили его в Академическую Коалицию Математики (АКМ). Несмотря на значительные средства, которые родители вкладывают в АКМ, Джон не уделяет должного внимания на занятиях. Однако сегодня он задумался о всех усилиях, которые его родители вкладывают в его образование, и начал чувствовать себя несколько... виноватым. Поэтому он принял решение: он собирается улучшить свои оценки по математике!
Но как только он решил сосредоточиться, урок закончился. Единственное, что он успел сделать, это в спешке переписать содержание доски в свою тетрадь. Сегодня учитель объяснял основные арифметические выражения с неизвестными. Он смутно помнит, что его одноклассники подставляли значения в неизвестные, чтобы получить результаты выражений. Однако в спешке Джон записал только выражения, значения и результаты в беспорядочном виде. Поэтому он не знает, какое значение соответствует каждой неизвестной, или какой результат соответствует каждому выражению.
Вот почему ему нужна ваша помощь: он хочет узнать, возможно ли, имея выражение, некоторые значения и результат, назначить эти значения неизвестным так, чтобы выражение оценивалось в данный результат. Конкретное назначение значений Джону не важно, так как он хочет сделать это сам. Он только хочет знать, возможно это или нет.
Входные данные
Каждый тестовый случай во входном файле состоит из двух строк:
Первая строка содержит последовательность натуральных чисел. Первое число (1 ≤ n ≤ 5) — это количество неизвестных, которые будут встречаться в выражении. За ним следует последовательность из n целых чисел v_1 ... v_n (0 ≤ v_i ≤ 50), которые являются значениями, назначаемыми неизвестным. Наконец, есть целое число m (0 ≤ m ≤ 1000), представляющее желаемый результат оценки выражения.
Вторая строка содержит арифметическое выражение, состоящее из строчных букв (a-z), скобок (( и )) и бинарных операторов (+, -, *). Это выражение будет содержать n неизвестных, представленных n различными строчными буквами, без повторений. Выражение не будет содержать пробелов и всегда будет синтаксически правильным, то есть это просто неизвестная или имеет форму (e_1 op e_2), где e_1 и e_2 — выражения, а op — один из трех возможных бинарных операторов.
Ввод заканчивается фиктивным тестовым случаем, состоящим из одной строки, содержащей 0 0, который не должен обрабатываться.
Выходные данные
Для каждого тестового случая напечатайте одну строку с YES, если существует назначение значений v_1 ... v_n неизвестным так, чтобы выражение оценивалось в m, и NO в противном случае. Обратите внимание, что каждое значение v_i должно быть назначено ровно одной неизвестной.