/*TIMUS:
Segment tree:
Offline for compression
NlogN
*/
#include <bits/stdc++.h>
using namespace std;
#define N 131072
struct ques{
int l,r;
};
ques q[2*N+2];
int a[N], b[N], cnt[N];
int gcd(int a, int b){
if(a>b) swap(a,b);
if(a==0) return b;
return gcd(a,b%a);
}
void update(int idx, int val) {
idx+=N; // indexed from 1
q[idx].l = val;
while(idx/2>=1){
int lc = 2*(idx/2);
int rc = lc+1;
idx/=2;
q[idx].l = gcd(q[lc].l,q[lc].r);
q[idx].r = gcd(q[rc].l,q[rc].r);
}
}
int query(){ return gcd(q[1].l,q[1].r); }
int main(){
int n;
cin>>n;
for(int i = 0;i<n;i++){
char c;
cin>>c>>a[i];
b[i] = a[i] = (c=='+')?a[i]:-a[i];
}
sort(b,b+n);
for(int i=0;i<n;i++){
int pos = lower_bound(b,b+n,(a[i]>0?a[i]:-a[i]))-b;
if(a[i]>0)
cnt[pos]++;
else
cnt[pos]--;
if(a[i]>0 && cnt[pos] == 1)
update(pos,a[i]);
if(cnt[pos] == 0 && a[i]<0)
update(pos,0);
int res = query();
printf("%d\n",(res==0) ? 1:res);
}
return 0;
}
LypUSU1VUzoKU2VnbWVudCB0cmVlOgpPZmZsaW5lIGZvciBjb21wcmVzc2lvbgpObG9nTgoqLwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBOIDEzMTA3MgpzdHJ1Y3QgcXVlc3sKCWludCBsLHI7Cn07CnF1ZXMgcVsyKk4rMl07CmludCBhW05dLCBiW05dLCBjbnRbTl07CgppbnQgZ2NkKGludCBhLCBpbnQgYil7CglpZihhPmIpIHN3YXAoYSxiKTsKCWlmKGE9PTApIHJldHVybiBiOwoJcmV0dXJuIGdjZChhLGIlYSk7Cn0KCnZvaWQgdXBkYXRlKGludCBpZHgsIGludCB2YWwpIHsKCWlkeCs9TjsgLy8gaW5kZXhlZCBmcm9tIDEgCglxW2lkeF0ubCA9IHZhbDsgCgl3aGlsZShpZHgvMj49MSl7CgkJaW50IGxjID0gMiooaWR4LzIpOwoJCWludCByYyA9IGxjKzE7CgkJaWR4Lz0yOwoJCXFbaWR4XS5sID0gZ2NkKHFbbGNdLmwscVtsY10ucik7CgkJcVtpZHhdLnIgPSBnY2QocVtyY10ubCxxW3JjXS5yKTsKCX0KCn0KCmludCBxdWVyeSgpeyByZXR1cm4gZ2NkKHFbMV0ubCxxWzFdLnIpOyB9CgppbnQgbWFpbigpewoKCWludCBuOwkKCWNpbj4+bjsKCWZvcihpbnQgaSA9IDA7aTxuO2krKyl7CgkJY2hhciBjOwoJCWNpbj4+Yz4+YVtpXTsKCQliW2ldID0gYVtpXSA9IChjPT0nKycpP2FbaV06LWFbaV07Cgl9CgoJc29ydChiLGIrbik7Cglmb3IoaW50IGk9MDtpPG47aSsrKXsKCQlpbnQgcG9zID0gbG93ZXJfYm91bmQoYixiK24sKGFbaV0+MD9hW2ldOi1hW2ldKSktYjsKCQkKCQlpZihhW2ldPjApCgkJCWNudFtwb3NdKys7CgkJZWxzZQoJCQljbnRbcG9zXS0tOwoJCWlmKGFbaV0+MCAmJiBjbnRbcG9zXSA9PSAxKSAKCQkJdXBkYXRlKHBvcyxhW2ldKTsKCgkJaWYoY250W3Bvc10gPT0gMCAmJiBhW2ldPDApCgkJCXVwZGF0ZShwb3MsMCk7CgkJaW50IHJlcyA9IHF1ZXJ5KCk7CgkKCQlwcmludGYoIiVkXG4iLChyZXM9PTApID8gMTpyZXMpOwoJfQoKCXJldHVybiAwOwp9