#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FORD(i, a, b) for (int i = a; i >= b; --i)
#define ll long long
#define MASK(x) (1 << x)
using namespace std;
const int N = 55;
int a[N], n, m, cntL[N], cntR[N], id[N];
int value[N], idx;
int cnt[MASK(25)];
vector<int> mask[2][N];
void nhap() {
int x;
vector<int> vec;
while (cin >> x) vec.push_back(x);
n = vec.size();
FOR(i, 1, n) a[i] = vec[i - 1];
}
int OR(int a, int b) {
if (b == -1) return a;
return a | MASK(b);
}
void dfs1(int pos, int delta, int msk) {
if (delta < 0) return ;
if (pos == m + 1) {
mask[0][delta].push_back(msk);
return ;
}
if (value[a[pos]]) dfs1(pos + 1, delta + value[a[pos]], msk);
else {
value[a[pos]] = 1;
dfs1(pos + 1, delta + value[a[pos]], OR(msk, id[a[pos]]));
value[a[pos]] = -1;
dfs1(pos + 1, delta + value[a[pos]], msk);
value[a[pos]] = 0;
}
}
void dfs2(int pos, int delta, int msk) {
if (delta > 0) return ;
if (pos == m) {
mask[1][-delta].push_back(msk);
return ;
}
if (value[a[pos]]) dfs2(pos - 1, delta + value[a[pos]], msk);
else {
value[a[pos]] = 1;
dfs2(pos - 1, delta + value[a[pos]], OR(msk, id[a[pos]]));
value[a[pos]] = -1;
dfs2(pos - 1, delta + value[a[pos]], msk);
value[a[pos]] = 0;
}
}
void giai() {
m = n / 2;
memset(id, -1, sizeof id);
memset(cntL, 0, sizeof cntL);
memset(cntR, 0, sizeof cntR);
memset(cnt, 0, sizeof cnt);
idx = 0;
FOR(i, 1, m) ++cntL[a[i]];
FOR(i, m + 1, n) ++cntR[a[i]];
FOR(i, 0, n - 1)
if (cntL[i] && cntR[i] && id[i] == -1) id[i] = idx++;
dfs1(1, 0, 0);
dfs2(n, 0, 0);
ll ans = 0;
FOR(i, 0, m) {
for (int x : mask[0][i]) ++cnt[x];
for (int x : mask[1][i]) ans += cnt[x];
for (int x : mask[0][i]) --cnt[x];
}
cout << ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#define name "parentheses"
if (fopen(name".inp", "r")) {
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
nhap();
giai();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgTUFTSyh4KSAoMSA8PCB4KQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gNTU7CmludCBhW05dLCBuLCBtLCBjbnRMW05dLCBjbnRSW05dLCBpZFtOXTsKaW50IHZhbHVlW05dLCBpZHg7CmludCBjbnRbTUFTSygyNSldOwp2ZWN0b3I8aW50PiBtYXNrWzJdW05dOwoKdm9pZCBuaGFwKCkgewogICAgaW50IHg7CiAgICB2ZWN0b3I8aW50PiB2ZWM7CiAgICB3aGlsZSAoY2luID4+IHgpIHZlYy5wdXNoX2JhY2soeCk7CiAgICBuID0gdmVjLnNpemUoKTsKICAgIEZPUihpLCAxLCBuKSBhW2ldID0gdmVjW2kgLSAxXTsKfQoKaW50IE9SKGludCBhLCBpbnQgYikgewogICAgaWYgKGIgPT0gLTEpIHJldHVybiBhOwogICAgcmV0dXJuIGEgfCBNQVNLKGIpOwp9Cgp2b2lkIGRmczEoaW50IHBvcywgaW50IGRlbHRhLCBpbnQgbXNrKSB7CiAgICBpZiAoZGVsdGEgPCAwKSByZXR1cm4gOwogICAgaWYgKHBvcyA9PSBtICsgMSkgewogICAgICAgIG1hc2tbMF1bZGVsdGFdLnB1c2hfYmFjayhtc2spOwogICAgICAgIHJldHVybiA7CiAgICB9CgogICAgaWYgKHZhbHVlW2FbcG9zXV0pIGRmczEocG9zICsgMSwgZGVsdGEgKyB2YWx1ZVthW3Bvc11dLCBtc2spOwogICAgZWxzZSB7CiAgICAgICAgdmFsdWVbYVtwb3NdXSA9IDE7CiAgICAgICAgZGZzMShwb3MgKyAxLCBkZWx0YSArIHZhbHVlW2FbcG9zXV0sIE9SKG1zaywgaWRbYVtwb3NdXSkpOwogICAgICAgIHZhbHVlW2FbcG9zXV0gPSAtMTsKICAgICAgICBkZnMxKHBvcyArIDEsIGRlbHRhICsgdmFsdWVbYVtwb3NdXSwgbXNrKTsKICAgICAgICB2YWx1ZVthW3Bvc11dID0gMDsKICAgIH0KfQoKdm9pZCBkZnMyKGludCBwb3MsIGludCBkZWx0YSwgaW50IG1zaykgewogICAgaWYgKGRlbHRhID4gMCkgcmV0dXJuIDsKICAgIGlmIChwb3MgPT0gbSkgewogICAgICAgIG1hc2tbMV1bLWRlbHRhXS5wdXNoX2JhY2sobXNrKTsKICAgICAgICByZXR1cm4gOwogICAgfQoKICAgIGlmICh2YWx1ZVthW3Bvc11dKSBkZnMyKHBvcyAtIDEsIGRlbHRhICsgdmFsdWVbYVtwb3NdXSwgbXNrKTsKICAgIGVsc2UgewogICAgICAgIHZhbHVlW2FbcG9zXV0gPSAxOwogICAgICAgIGRmczIocG9zIC0gMSwgZGVsdGEgKyB2YWx1ZVthW3Bvc11dLCBPUihtc2ssIGlkW2FbcG9zXV0pKTsKICAgICAgICB2YWx1ZVthW3Bvc11dID0gLTE7CiAgICAgICAgZGZzMihwb3MgLSAxLCBkZWx0YSArIHZhbHVlW2FbcG9zXV0sIG1zayk7CiAgICAgICAgdmFsdWVbYVtwb3NdXSA9IDA7CiAgICB9Cn0KCnZvaWQgZ2lhaSgpIHsKICAgIG0gPSBuIC8gMjsKICAgIG1lbXNldChpZCwgLTEsIHNpemVvZiBpZCk7CiAgICBtZW1zZXQoY250TCwgMCwgc2l6ZW9mIGNudEwpOwogICAgbWVtc2V0KGNudFIsIDAsIHNpemVvZiBjbnRSKTsKICAgIG1lbXNldChjbnQsIDAsIHNpemVvZiBjbnQpOwogICAgaWR4ID0gMDsKCiAgICBGT1IoaSwgMSwgbSkgKytjbnRMW2FbaV1dOwogICAgRk9SKGksIG0gKyAxLCBuKSArK2NudFJbYVtpXV07CgogICAgRk9SKGksIDAsIG4gLSAxKQogICAgICAgIGlmIChjbnRMW2ldICYmIGNudFJbaV0gJiYgaWRbaV0gPT0gLTEpIGlkW2ldID0gaWR4Kys7CgogICAgZGZzMSgxLCAwLCAwKTsKICAgIGRmczIobiwgMCwgMCk7CgogICAgbGwgYW5zID0gMDsKICAgIEZPUihpLCAwLCBtKSB7CiAgICAgICAgZm9yIChpbnQgeCA6IG1hc2tbMF1baV0pICsrY250W3hdOwogICAgICAgIGZvciAoaW50IHggOiBtYXNrWzFdW2ldKSBhbnMgKz0gY250W3hdOwogICAgICAgIGZvciAoaW50IHggOiBtYXNrWzBdW2ldKSAtLWNudFt4XTsKICAgIH0KCiAgICBjb3V0IDw8IGFuczsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgI2RlZmluZSBuYW1lICJwYXJlbnRoZXNlcyIKCiAgICBpZiAoZm9wZW4obmFtZSIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4obmFtZSIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihuYW1lIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgbmhhcCgpOwogICAgZ2lhaSgpOwoKICAgIHJldHVybiAwOwp9Cg==