#include<bits/stdc++.h>
using namespace std;
int n;
map<string, int> a;
string ans[1001];
int idx=0;
bool cmp(string a, string b){
return a<b;
}
int main(){
cin>>n;
a.insert(a.begin(), pair<string, int>("__NULL__",0));
for(int op=0; op<n; op++){
char lf[101], rg[101];
string l, r;
int s=0, t=0, fi;
scanf("%[^=]=",lf);
scanf("%[^;];\n",rg);
l=lf; r=rg;
if('0'<=r[0]&&r[0]<='9'){
for(int i=0; i<(int)r.size()&&r[i]!='+'; i++){
s*=10;
s+=r[i]-'0';
fi=i;
}
for(int i=fi+1; i<(int)r.size(); i++){
t*=10;
t+=r[i]-'0';
}
s+=t;
if(a.end()==a.find(l)){
ans[idx++]=l;
a.insert(a.begin(), pair<string, int>(l, s));
}else{
a[l]=s;
}
}else{
string x, y;
bool flg=true;
int fi, s;
for(int i=0; i<(int)r.size()&&r[i]!='+'; i++){
x+=r[i];
fi=i;
}
for(int i=fi+1; i<(int)r.size(); i++){
flg=false;
y+=r[i];
}
if(flg){
y="__NULL__";
}
s=a[x]+a[y];
if(a.end()==a.find(l)){
ans[idx++]=l;
a.insert(a.begin(), pair<string, int>(l, s));
}else{
a[l]=s;
}
}
}
sort(ans, ans+idx, cmp);
for(int i=0; i<idx; i++){
printf("%s %d\n", ans[i].c_str(), a[ans[i]]);
}
return 0;
}
和题解都对过了,感觉没啥问题,然而样例不过