#include<stdio.h>
#include<string.h>
#define N 10005
struct node{
int value;
node *left;
node *right;
node(){
value = 0;
left = right = NULL;
}
};
int n, num[N];
node *build(){
char c;
int cnt = 0, flag = 0;
node *now;
now = new node;
while (scanf("%c", &c)){
if (c >= '0' && c <= '9'){
now -> value = now -> value * 10 + c - '0';
}
else if (c == '(' && cnt == 0){
now -> left = build();
cnt++;
}
else if (c == '(' && cnt == 1){
now -> right = build();
cnt++;
}
else if(c == ')')
break;
else if (c == '-')
flag = 1;
}
if (flag)
now -> value = - now -> value;
if (now -> value == 0 && cnt == 0)
return NULL;
else
return now;
}
void BFS(node * now, int sum){
if (now == NULL)
return;
sum += now -> value;
if (now -> left == NULL && now -> right == NULL)
num[n++] = sum;
else{
if (now -> left != NULL)
BFS(now -> left, sum);
if (now -> right != NULL)
BFS(now -> right, sum);
}
}
void delete_tree(node * now){
if (now == NULL)
return ;
if (now -> left != NULL)
delete_tree(now -> left);
if (now -> right != NULL)
delete_tree(now -> right);
delete now;
}
int main(){
int sum;
char c;
node *head;
while (scanf("%d", &sum) != EOF){
// Init.
memset(num, 0, sizeof(num));
head = NULL;
n = 0;
// Build tree;
while (scanf("%c", &c) != EOF){
if (c == '('){
head = build();
break;
}
}
// BFS.
BFS(head, 0);
// Judge.
int i;
for (i = 0; i < n; i++)
if (num[i] == sum)
break;
if (i == n)
printf("no\n");
else
printf("yes\n");
// Delete.
delete_tree(head);
}
return 0;
}