#include<bits/stdc++.h>
using namespace std;
namespace GJD {
void add(int s[],int t[],int &tot,int cnt) {
for(int i=1;i<=max(tot,cnt);i++)
s[i] = s[i] + t[i];
for(int i=1;i<=max(tot,cnt);i++) {
s[i+1] += s[i]/10;
s[i] = s[i]%10;
} while(s[tot+1] > 0)tot++;
}
void jian(int s[],int t[],int &tot,int cnt) {
for(int i=1;i<=max(tot,cnt);i++)
s[i] = s[i] - t[i];
for(int i=1;i<=tot;i++) {
while(s[i] < 0)s[i+1] --,s[i] += 10;
} while(s[tot] == 0&&tot)tot--;
}
}
using namespace GJD;
int ans[10005],ksm[10005],tot = 1,cnt = 1,p[10000];
void solve() {
int cnt1 = cnt;
for(int i=1;i<=cnt;i++)
p[i] = ans[i];
add(p,p,cnt1,cnt1);
ksm[1]--,add(ans,ksm,cnt,tot),ksm[1]++;
jian(ans,p,cnt,cnt1);
}
int main()
{
ksm[1] = 1;
int n; cin>>n;
for(int i=1;i<=n;i++) {
int opt; cin>>opt;
add(ksm,ksm,tot,tot);
if(opt == 1)solve();
} while(cnt)cout<<ans[cnt--];
return 0;
}