#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct a {
long t, r, d[3], p[2];
} *A;
long *ma(int n) {
}
int mv(long *d, long *s, int n) {
long i = 0, _n = (n);
for (; i < _n; ++i) {
d[i] = s[i];
}
}
int tr(int r, long *d) {
long z = 1;
long i = 0, _n = (r);
for (; i < _n; ++i) {
z = z * d[i];
}
return z;
}
A ga(int t, int r, long *d) {
A z = (A)ma(5 + tr(r, d));
z->t = t, z->r = r, mv(z->d, d, r);
return z;
}
A iota(A w) {
long n = *w->p;
A z = ga(0, 1, &n);
long i = 0, _n = (n);
for (; i < _n; ++i) {
z->p[i] = i;
}
return z;
}
A plus(A a, A w) {
long r = w->r, *d = w->d, n = tr(r, d);
A z = ga(0, r, d);
long i = 0, _n = (n);
for (; i < _n; ++i) {
z->p[i] = a->p[i] + w->p[i];
}
return z;
}
A from(A a, A w) {
long r = w->r - 1, *d = w->d + 1, n = tr(r, d);
A z = ga(w->t, r, d);
mv(z->p, w->p + (n**a->p), n);
return z;
}
A box(A w) {
A z = ga(1, 0, 0);
*z->p = (long)w;
return z;
}
A cat(A a, A w) {
long an = tr(a->r, a->d), wn = tr(w->r, w->d), n = an + wn;
A z = ga(w->t, 1, &n);
mv(z->p, a->p, an);
mv(z->p + an, w->p, wn);
return z;
}
A find(A a, A w) {
}
A rsh(A a, A w) {
long r = a->r ? *a->d : 1, n = tr(r, a->p), wn = tr(w->r, w->d);
A z = ga(w->t, r, a->p);
mv(z->p, w->p, wn = n > wn ? wn : n);
if (n -= wn)mv(z->p + wn, z->p, n);
return z;
}
A sha(A w) {
A z = ga(0, 1, &w->r);
mv(z->p, w->d, w->r);
return z;
}
A id(A w) {
return w;
}
A size(A w) {
A z = ga(0, 0, 0);
*z->p = w->r ? *w->d : 1;
return z;
}
int pi(int i) {
}
int nl() {
}
int pr(A w) {
long r = w->r, *d = w->d, n = tr(r, d);
long i = 0, _n = (r);
for (; i < _n; ++i) {
pi(d[i]);
}
nl();
if (w->t) {
long i = 0, _n = (n);
for (; i < _n; ++i) {
pr(w->p[i]);
}
} else {
long i = 0, _n = (n);
for (; i < _n; ++i) {
pi(w->p[i]);
}
};
nl();
}
char vt[] = "+{~<#,";
A (*vd[])() = {0, plus, from, find, 0, rsh, cat},
(*vm[])() = {0, id, size, iota, box, sha, 0};
long st[26];
int qp(int a) {
return a >= 'a' && a <= 'z';
}
int qv(int a) {
return a < 'a';
}
A ex(long *e) {
long a = *e;
if (qp(a)) {
if (e[1] == '=')
return st[a - 'a'] = ex(e + 2);
a = st[ a - 'a'];
}
return qv(a) ? (*vm[a])(ex(e + 1)) : e[1] ? (*vd[e[1]])(a, ex(e + 2)) : (A)a;
}
int noun(int c) {
A z;
if (c < '0' || c > '9')
return 0;
z = ga(0, 0, 0);
*z->p = c - '0';
return z;
}
int verb(int c) {
long i = 0;
for (; vt[i];)
if (vt[i++] == c)
return i;
return 0;
}
long *wd(char *s) {
long a
, n
= strlen(s
), *e
= ma
(n
+ 1); char c;
long i = 0, _n = (n);
for (; i < _n; ++i) {
e[i] = (a = noun(c = s[i])) ? a : (a = verb(c)) ? a : c;
}
e[n] = 0;
return e;
}
int main() {
char s[99];
pr(ex(wd(s)));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgYSB7CiAgICBsb25nIHQsIHIsIGRbM10sIHBbMl07Cn0gKkE7Cgpsb25nICptYShpbnQgbikgewogICAgcmV0dXJuIChsb25nKiltYWxsb2MobiAqIDQpOwp9CgppbnQgbXYobG9uZyAqZCwgbG9uZyAqcywgaW50IG4pIHsKICAgIGxvbmcgaSA9IDAsIF9uID0gKG4pOwogICAgZm9yICg7IGkgPCBfbjsgKytpKSB7CiAgICAgICAgZFtpXSA9IHNbaV07CiAgICB9Cn0KCmludCB0cihpbnQgciwgbG9uZyAqZCkgewogICAgbG9uZyB6ID0gMTsKICAgIGxvbmcgaSA9IDAsIF9uID0gKHIpOwogICAgZm9yICg7IGkgPCBfbjsgKytpKSB7CiAgICAgICAgeiA9IHogKiBkW2ldOwogICAgfQogICAgcmV0dXJuIHo7Cn0KCkEgZ2EoaW50IHQsIGludCByLCBsb25nICpkKSB7CiAgICBBIHogPSAoQSltYSg1ICsgdHIociwgZCkpOwogICAgei0+dCA9IHQsIHotPnIgPSByLCBtdih6LT5kLCBkLCByKTsKICAgIHJldHVybiB6Owp9CgpBIGlvdGEoQSB3KSB7CiAgICBsb25nIG4gPSAqdy0+cDsKICAgIEEgeiA9IGdhKDAsIDEsICZuKTsKICAgIGxvbmcgaSA9IDAsIF9uID0gKG4pOwogICAgZm9yICg7IGkgPCBfbjsgKytpKSB7CiAgICAgICAgei0+cFtpXSA9IGk7CiAgICB9CiAgICByZXR1cm4gejsKfQoKQSBwbHVzKEEgYSwgQSB3KSB7CiAgICBsb25nIHIgPSB3LT5yLCAqZCA9IHctPmQsIG4gPSB0cihyLCBkKTsKICAgIEEgeiA9IGdhKDAsIHIsIGQpOwogICAgbG9uZyBpID0gMCwgX24gPSAobik7CiAgICBmb3IgKDsgaSA8IF9uOyArK2kpIHsKICAgICAgICB6LT5wW2ldID0gYS0+cFtpXSArIHctPnBbaV07CiAgICB9CiAgICByZXR1cm4gejsKfQoKQSBmcm9tKEEgYSwgQSB3KSB7CiAgICBsb25nIHIgPSB3LT5yIC0gMSwgKmQgPSB3LT5kICsgMSwgbiA9IHRyKHIsIGQpOwogICAgQSB6ID0gZ2Eody0+dCwgciwgZCk7CiAgICBtdih6LT5wLCB3LT5wICsgKG4qKmEtPnApLCBuKTsKICAgIHJldHVybiB6Owp9CgpBIGJveChBIHcpIHsKICAgIEEgeiA9IGdhKDEsIDAsIDApOwogICAgKnotPnAgPSAobG9uZyl3OwogICAgcmV0dXJuIHo7Cn0KCkEgY2F0KEEgYSwgQSB3KSB7CiAgICBsb25nIGFuID0gdHIoYS0+ciwgYS0+ZCksIHduID0gdHIody0+ciwgdy0+ZCksIG4gPSBhbiArIHduOwogICAgQSB6ID0gZ2Eody0+dCwgMSwgJm4pOwogICAgbXYoei0+cCwgYS0+cCwgYW4pOwogICAgbXYoei0+cCArIGFuLCB3LT5wLCB3bik7CiAgICByZXR1cm4gejsKfQoKQSBmaW5kKEEgYSwgQSB3KSB7Cn0KCkEgcnNoKEEgYSwgQSB3KSB7CiAgICBsb25nIHIgPSBhLT5yID8gKmEtPmQgOiAxLCBuID0gdHIociwgYS0+cCksIHduID0gdHIody0+ciwgdy0+ZCk7CiAgICBBIHogPSBnYSh3LT50LCByLCBhLT5wKTsKICAgIG12KHotPnAsIHctPnAsIHduID0gbiA+IHduID8gd24gOiBuKTsKICAgIGlmIChuIC09IHduKW12KHotPnAgKyB3biwgei0+cCwgbik7CiAgICByZXR1cm4gejsKfQoKQSBzaGEoQSB3KSB7CiAgICBBIHogPSBnYSgwLCAxLCAmdy0+cik7CiAgICBtdih6LT5wLCB3LT5kLCB3LT5yKTsKICAgIHJldHVybiB6Owp9CgpBIGlkKEEgdykgewogICAgcmV0dXJuIHc7Cn0KCkEgc2l6ZShBIHcpIHsKICAgIEEgeiA9IGdhKDAsIDAsIDApOwogICAgKnotPnAgPSB3LT5yID8gKnctPmQgOiAxOwogICAgcmV0dXJuIHo7Cn0KCmludCBwaShpbnQgaSkgewogICAgcHJpbnRmKCIlZCAiLCBpKTsKfQoKaW50IG5sKCkgewogICAgcHJpbnRmKCJcbiIpOwp9CgppbnQgcHIoQSB3KSB7CiAgICBsb25nIHIgPSB3LT5yLCAqZCA9IHctPmQsIG4gPSB0cihyLCBkKTsKICAgIGxvbmcgaSA9IDAsIF9uID0gKHIpOwogICAgZm9yICg7IGkgPCBfbjsgKytpKSB7CiAgICAgICAgcGkoZFtpXSk7CiAgICB9CiAgICBubCgpOwogICAgaWYgKHctPnQpIHsKICAgICAgICBsb25nIGkgPSAwLCBfbiA9IChuKTsKICAgICAgICBmb3IgKDsgaSA8IF9uOyArK2kpIHsKICAgICAgICAgICAgcHJpbnRmKCI8ICIpOwogICAgICAgICAgICBwcih3LT5wW2ldKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGxvbmcgaSA9IDAsIF9uID0gKG4pOwogICAgICAgIGZvciAoOyBpIDwgX247ICsraSkgewogICAgICAgICAgICBwaSh3LT5wW2ldKTsKICAgICAgICB9CiAgICB9OwogICAgbmwoKTsKfQoKY2hhciB2dFtdID0gIit7fjwjLCI7CgpBICgqdmRbXSkoKSA9IHswLCBwbHVzLCBmcm9tLCBmaW5kLCAwLCByc2gsIGNhdH0sCiAgKCp2bVtdKSgpID0gezAsIGlkLCBzaXplLCBpb3RhLCBib3gsIHNoYSwgMH07Cgpsb25nIHN0WzI2XTsKCmludCBxcChpbnQgYSkgewogICAgcmV0dXJuIGEgPj0gJ2EnICYmIGEgPD0gJ3onOwp9CgppbnQgcXYoaW50IGEpIHsKICAgIHJldHVybiBhIDwgJ2EnOwp9CgpBIGV4KGxvbmcgKmUpIHsKICAgIGxvbmcgYSA9ICplOwogICAgaWYgKHFwKGEpKSB7CiAgICAgICAgaWYgKGVbMV0gPT0gJz0nKQogICAgICAgICAgICByZXR1cm4gc3RbYSAtICdhJ10gPSBleChlICsgMik7CiAgICAgICAgYSA9IHN0WyBhIC0gJ2EnXTsKICAgIH0KICAgIHJldHVybiBxdihhKSA/ICgqdm1bYV0pKGV4KGUgKyAxKSkgOiBlWzFdID8gKCp2ZFtlWzFdXSkoYSwgZXgoZSArIDIpKSA6IChBKWE7Cn0KCmludCBub3VuKGludCBjKSB7CiAgICBBIHo7CiAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQogICAgICAgIHJldHVybiAwOwogICAgeiA9IGdhKDAsIDAsIDApOwogICAgKnotPnAgPSBjIC0gJzAnOwogICAgcmV0dXJuIHo7Cn0KCmludCB2ZXJiKGludCBjKSB7CiAgICBsb25nIGkgPSAwOwogICAgZm9yICg7IHZ0W2ldOykKICAgICAgICBpZiAodnRbaSsrXSA9PSBjKQogICAgICAgICAgICByZXR1cm4gaTsKICAgIHJldHVybiAwOwp9Cgpsb25nICp3ZChjaGFyICpzKSB7CiAgICBsb25nIGEsIG4gPSBzdHJsZW4ocyksICplID0gbWEobiArIDEpOwogICAgY2hhciBjOwogICAgbG9uZyBpID0gMCwgX24gPSAobik7CiAgICBmb3IgKDsgaSA8IF9uOyArK2kpIHsKICAgICAgICBlW2ldID0gKGEgPSBub3VuKGMgPSBzW2ldKSkgPyBhIDogKGEgPSB2ZXJiKGMpKSA/IGEgOiBjOwogICAgfQogICAgZVtuXSA9IDA7CiAgICByZXR1cm4gZTsKfQoKaW50IG1haW4oKSB7CiAgICBjaGFyIHNbOTldOwogICAgd2hpbGUgKGdldHMocykpCiAgICAgICAgcHIoZXgod2QocykpKTsKICAgIHJldHVybiAwOwp9Cgo=