string a(){ while (i<e.size() && e[i]==' ') i++; if (i >= e.size()) return""; int j = i; while (j<e.size() && e[j]!=' ') j++; string t = e.substr(i, j-i); i = j+1; return t; }
intb(){ string t = a(); if (t.empty()) return0; if (t=="+" || t=="-" || t=="*") { int l = b(); int r = b(); if (t == "+") return r + l; if (t == "-") return r - l; if (t == "*") return r * l; } elsereturnstoi(t); return0; }
voidbuild(int pr[], int ir[], int ps, int pe, int is, int ie){ if (ps>pe || is>ie) return; int root=pr[ps], rpi=is; while (ir[rpi] != root) rpi++; int lsize = rpi-is; build(pr, ir, ps+1, ps+lsize, is, rpi-1); build(pr, ir, ps+lsize+1, pe, rpi+1, ie); cout << root; if (ps!=0 || pe!=pe) cout << ' '; }
intmain(){ int n; cin >> n; int pr[100], ir[100]; for (int i=0; i<n; i++) cin >> pr[i]; for (int i=0; i<n; i++) cin >> ir[i]; build(pr, ir, 0, n-1, 0, n-1); return0; }