#include <iostream>
#include <map>
#include <vector>
using namespace std;
struct data {
vector<data> vd;
vector<int> vi;
};
map<int, int> mp;
// return value have sum, current depth
void solve(data d, int depth = 0) {
int sum = 0;
for(int i = 0; i < d.vi.size(); ++i) sum += d.vi[i];
for(data dt: d.vd) {
solve(dt, depth+1);
}
mp[depth] += sum;
return;
}
int main_(data d) {
solve(d);
int n = mp.size();
int res = 0;
for(int i = 0; i < n; ++i)
res += (n-i) * mp[i];
return res;
}
data makeData() {
data d;
d.vi.push_back(7);
d.vi.push_back(1);
data d2;
d2.vd.push_back(d);
d2.vi.push_back(6);
d2.vi.push_back(2);
data d3;
d3.vi.push_back(5);
d3.vd.push_back(d2);
return d3;
}
data makeData2() {
data d;
d.vi.push_back(1);
d.vi.push_back(1);
data d2;
d2.vi.push_back(1);
d2.vi.push_back(1);
data d3;
d3.vi.push_back(2);
d3.vd.push_back(d);
d3.vd.push_back(d2);
return d3;
}
int main() {
data d = makeData();
cout << main_(d) << endl;
// resetting map to process next input
mp.clear();
d = makeData2();
cout << main_(d) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IGRhdGEgewogICAgdmVjdG9yPGRhdGE+IHZkOwogICAgdmVjdG9yPGludD4gdmk7Cn07CgptYXA8aW50LCBpbnQ+IG1wOwoKLy8gcmV0dXJuIHZhbHVlIGhhdmUgc3VtLCBjdXJyZW50IGRlcHRoCnZvaWQgc29sdmUoZGF0YSBkLCBpbnQgZGVwdGggPSAwKSB7CiAgICAKICAgIAogICAgaW50IHN1bSA9IDA7CiAgICAKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBkLnZpLnNpemUoKTsgKytpKSBzdW0gKz0gZC52aVtpXTsKICAgIAogICAgZm9yKGRhdGEgZHQ6IGQudmQpIHsKICAgICAgICBzb2x2ZShkdCwgZGVwdGgrMSk7CiAgICB9CiAgICAKICAgIG1wW2RlcHRoXSArPSBzdW07CiAgICByZXR1cm47CiAgICAKfQoKaW50IG1haW5fKGRhdGEgZCkgewogICAgc29sdmUoZCk7CiAgICBpbnQgbiA9IG1wLnNpemUoKTsKICAgIGludCByZXMgPSAwOwogICAgZm9yKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICByZXMgKz0gKG4taSkgKiBtcFtpXTsKICAgIHJldHVybiByZXM7Cn0KCgpkYXRhIG1ha2VEYXRhKCkgewogICAgZGF0YSBkOwogICAgZC52aS5wdXNoX2JhY2soNyk7CiAgICBkLnZpLnB1c2hfYmFjaygxKTsKICAgIAogICAgZGF0YSBkMjsKICAgIGQyLnZkLnB1c2hfYmFjayhkKTsKICAgIGQyLnZpLnB1c2hfYmFjayg2KTsKICAgIGQyLnZpLnB1c2hfYmFjaygyKTsKICAgIAogICAgZGF0YSBkMzsKICAgIGQzLnZpLnB1c2hfYmFjayg1KTsKICAgIGQzLnZkLnB1c2hfYmFjayhkMik7CiAgICByZXR1cm4gZDM7Cn0KCmRhdGEgbWFrZURhdGEyKCkgewogICAgCiAgICBkYXRhIGQ7CiAgICBkLnZpLnB1c2hfYmFjaygxKTsKICAgIGQudmkucHVzaF9iYWNrKDEpOwogICAgCiAgICBkYXRhIGQyOwogICAgZDIudmkucHVzaF9iYWNrKDEpOwogICAgZDIudmkucHVzaF9iYWNrKDEpOwogICAgCiAgICBkYXRhIGQzOwogICAgZDMudmkucHVzaF9iYWNrKDIpOwogICAgZDMudmQucHVzaF9iYWNrKGQpOwogICAgZDMudmQucHVzaF9iYWNrKGQyKTsKICAgIHJldHVybiBkMzsKfQoKaW50IG1haW4oKSB7CgogICAgZGF0YSBkID0gbWFrZURhdGEoKTsKICAgIGNvdXQgPDwgbWFpbl8oZCkgPDwgZW5kbDsKICAgIAogICAgLy8gcmVzZXR0aW5nIG1hcCB0byBwcm9jZXNzIG5leHQgaW5wdXQKICAgIG1wLmNsZWFyKCk7CiAgICAKICAgIGQgPSBtYWtlRGF0YTIoKTsKICAgIGNvdXQgPDwgbWFpbl8oZCkgPDwgZW5kbDsKICAgIHJldHVybiAwOwogICAgCn0=