#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int M,A; string S; vector E; vector expression(); vector term(); vector factor(); vector number(); int pos; vector expression() { vector X=term(); if(pos Y=expression(); vector Z(M+1); int x,y; FOR(x,M+1) if(X[x].size()) FOR(y,M+1) if(Y[y].size()) { if(x+y<=M) { Z[x+y]=Y[y]+"+"+X[x]; } if(y-x>=0) { Z[y-x]=Y[y]+"-"+X[x]; } } return Z; } else { return X; } } vector term() { vector X=factor(); if(pos Y=term(); vector Z(M+1); int x,y; FOR(x,M+1) if(X[x].size()) FOR(y,M+1) if(Y[y].size()) { if(x*y<=M) { Z[x*y]=Y[y]+"*"+X[x]; } if(x) Z[y/x]=Y[y]+"/"+X[x]; } return Z; } else { return X; } } vector factor() { if(E[pos]==10000+')') { pos++; vector R=expression(); FORR(r,R) if(r.size()) r='('+r+')'; assert(E[pos]==10000+'('); pos++; return R; } else { return number(); } } vector number() { vector R(M+1); R[E[pos]]=to_string(E[pos]); pos++; return R; } void solve() { int i,j,k,l,r,x,y; string s; cin>>M>>A>>S; FORR(c,S) { if(c>='0'&&c<='9') { if(E.empty()||E.back()>=10000) E.push_back(0); E.back()=E.back()*10+c-'0'; if(E.back()>M) { cout<<-1<