#include using namespace std; typedef long long ll; #define REP(i, n) for(int(i)=0;(i)<(n);++(i)) #define in(T,V) T V;cin>>V; typedef string::const_iterator st; ll num(st &s, st e){ ll ret = 0; if(s == e) throw; while(isdigit(*s) && s!= e){ ret = ret * 10 + (*s - '0'); s++; } return ret; } ll expr(st &s, st e){ ll ret = num(s,e); while(s!= e){ if(*s == '+'){ s++; ret += num(s,e); } else if(*s == '-'){ s++; ret -= num(s,e); } else break; } return ret; } ll calc(string s){ st ss=s.begin(); return expr(ss, s.end()); } ll solvemax(int N, string nu, int pl, int mi){ int maxdgt = nu.length() - (pl + mi); sort(nu.rbegin(), nu.rend()); string res; REP(i,maxdgt){ res += nu[0]; nu.erase(nu.begin()); } REP(i,pl){ res += '+'; res += nu[0]; nu.erase(nu.begin()); } REP(i,mi){ res += '-'; res += nu[0]; nu.erase(nu.begin()); } return calc(res); } ll solvemin(int N, string nu, int pl, int mi){ string res; sort(nu.begin(), nu.end()); if(mi > 0){ REP(i,pl){ res += nu[0]; nu.erase(nu.begin()); res += '+'; } REP(i,mi){ res += nu[0]; nu.erase(nu.begin()); res += '-'; } sort(nu.rbegin(), nu.rend()); res += nu; } else { ll s[15]; REP(i,15) s[i] = 0; int len = nu.length(); REP(i,len){ auto &v = s[i % (pl+1)]; v = v * 10 + (nu[i]-'0'); } ll r = 0; REP(i,pl+1) r += s[i]; return r; } return calc(res); } int main(){ in(int, N); int pl = 0, mi = 0; string nu; REP(i,N){ in(string, s); switch(s[0]){ case '+': pl++; break; case '-': mi++; break; default: nu += s; break; } } cout << solvemax(N,nu,pl,mi) << " " << solvemin(N,nu,pl,mi) << endl; }