/*
递归的应用
*/
#include <iostream>
#include <string>
#define MAX_N 1000
using namespace std;
int len, dest;
string curStr;
bool found = false;
bool isDigit(char ch)
{
return ((ch >= '0' && ch <= '9') || ch == '-');
}
int check(int curPos, int curVal, bool &empty)
{
bool minus = false;
//cout<<curVal<<endl;
if(found)
return 0;
curPos++;
if(!isDigit(curStr[curPos]))
{
/*if(curVal == dest)
found = true;
cout<<curVal<<endl;
*/
empty = true;
return curPos + 1;
}
else
{
empty = false;
if(curStr[curPos] == '-')
{
minus = true;
curPos++;
}
int val = int(curStr[curPos] - '0');
while(isDigit(curStr[++curPos]))
val = val * 10 + int(curStr[curPos] - '0');
if(minus) val = -val;
bool empty1, empty2;
int nextPos = check(curPos, curVal + val, empty1);
if(found) return 0;
nextPos = check(nextPos, curVal + val, empty2);
if(found) return 0;
if(empty1 && empty2)
{
//cout<<curVal + val<<endl;
if(curVal + val == dest)
found = true;
}
return nextPos + 1;
}
}
int main()
{
string temp;
int lPN = 0, rPN = 0, i;
while(cin>>dest)
{
curStr = "";
found = false;
lPN = rPN = 0;
while((lPN == 0 && rPN == 0) || lPN > rPN)
{
cin>>temp;
for(i = 0; i < temp.length(); i++)
{
if(temp[i] == ' ') continue;
if(temp[i] == '(') lPN++;
else if(temp[i] == ')') rPN++;
curStr += temp[i];
}
}
//cout<<curStr<<endl;
bool e1;
check(0, 0, e1);
if(found)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}