/*
Timus GCD2010
BBST: indexing like segment tree
offline for compression/keeping count of elements.
*/
#include <bits/stdc++.h>
using namespace std;
#define N 100010
struct node{
int l,r,v;
}; //need not use v but the main loop gets a bit ugly;
node q[N];
int a[N], b[N], cnt[N];
int gcd(int a, int b){
if(a>b) swap(a,b);
while(a>0){
b%=a;
swap(b,a);
}
return b;
}
void update(int idx, int val){
q[idx].v = val;
for(;idx/2>0;idx/=2){
int lc = 2*(idx/2);
int rc = lc+1;
q[idx/2].l = gcd(q[lc].r,gcd(q[lc].v,q[lc].l));
q[idx/2].r = gcd(q[rc].r,gcd(q[rc].v,q[rc].l));
/*cout<<"gcd of "<<q[lc].l<<" "<<q[lc].r<<" "<<q[lc].v<<" is "<<q[idx].l<<" "<<lc<<" parent "<<idx/2<<endl;
cout<<"gcd of "<<q[rc].l<<" "<<q[rc].r<<" "<<q[rc].v<<" is "<<q[idx].r<<" "<<rc<<" parent "<<idx/2<<endl;*/
}
}
int query(){ return gcd(q[1].r,gcd(q[1].v,q[1].l)); }
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
#endif
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+1;
if(a[i]>0)
cnt[pos]++;
else
cnt[pos]--;
if(a[i]>0 && cnt[pos] == 1)
update(pos,a[i]); //pos is just an empty space. [can be any]
if(a[i]<0 && cnt[pos] == 0)
update(pos,0);
int res = query();
printf("%d\n",(res == 0)?1:res);
}
return 0;
}
LyoKVGltdXMgR0NEMjAxMApCQlNUOiAgaW5kZXhpbmcgbGlrZSBzZWdtZW50IHRyZWUKb2ZmbGluZSBmb3IgY29tcHJlc3Npb24va2VlcGluZyBjb3VudCBvZiBlbGVtZW50cy4KKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBOIDEwMDAxMApzdHJ1Y3Qgbm9kZXsKCWludCBsLHIsdjsKfTsgLy9uZWVkIG5vdCB1c2UgdiBidXQgdGhlIG1haW4gbG9vcCBnZXRzIGEgYml0IHVnbHk7Cm5vZGUgcVtOXTsKaW50IGFbTl0sIGJbTl0sIGNudFtOXTsKCmludCBnY2QoaW50IGEsIGludCBiKXsKCWlmKGE+Yikgc3dhcChhLGIpOwoJd2hpbGUoYT4wKXsKCQliJT1hOwoJCXN3YXAoYixhKTsKCX0KCXJldHVybiBiOwp9CgoKdm9pZCB1cGRhdGUoaW50IGlkeCwgaW50IHZhbCl7CglxW2lkeF0udiA9IHZhbDsgCglmb3IoO2lkeC8yPjA7aWR4Lz0yKXsJCQoJCWludCBsYyA9IDIqKGlkeC8yKTsKCQlpbnQgcmMgPSBsYysxOwoJCXFbaWR4LzJdLmwgPSBnY2QocVtsY10ucixnY2QocVtsY10udixxW2xjXS5sKSk7CgkJcVtpZHgvMl0uciA9IGdjZChxW3JjXS5yLGdjZChxW3JjXS52LHFbcmNdLmwpKTsKCQkvKmNvdXQ8PCJnY2Qgb2YgIjw8cVtsY10ubDw8IiAiPDxxW2xjXS5yPDwiICI8PHFbbGNdLnY8PCIgaXMgIjw8cVtpZHhdLmw8PCIgIjw8bGM8PCIgcGFyZW50ICI8PGlkeC8yPDxlbmRsOwoJCWNvdXQ8PCJnY2Qgb2YgIjw8cVtyY10ubDw8IiAiPDxxW3JjXS5yPDwiICI8PHFbcmNdLnY8PCIgaXMgIjw8cVtpZHhdLnI8PCIgIjw8cmM8PCIgcGFyZW50ICI8PGlkeC8yPDxlbmRsOyovCgoJfQp9CgppbnQgcXVlcnkoKXsgcmV0dXJuIGdjZChxWzFdLnIsZ2NkKHFbMV0udixxWzFdLmwpKTsgfQoKCmludCBtYWluKCl7CiNpZm5kZWYgT05MSU5FX0pVREdFCglmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiNlbmRpZgoKCWludCBuOwoJY2luPj5uOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJY2hhciBjOwoJCWNpbj4+Yz4+YVtpXTsKCQliW2ldID0gYVtpXSA9IChjPT0nKycpP2FbaV06LWFbaV07Cgl9Cglzb3J0KGIsYituKTsKCglmb3IoaW50IGk9MDtpPG47aSsrKXsKCQlpbnQgcG9zID0gbG93ZXJfYm91bmQoYixiK24sKGFbaV08MD8tYVtpXTphW2ldKSktYisxOwoJCWlmKGFbaV0+MCkKCQkJY250W3Bvc10rKzsKCQllbHNlCgkJCWNudFtwb3NdLS07CgoJCWlmKGFbaV0+MCAmJiBjbnRbcG9zXSA9PSAxKQoJCQl1cGRhdGUocG9zLGFbaV0pOyAvL3BvcyBpcyBqdXN0IGFuIGVtcHR5IHNwYWNlLiBbY2FuIGJlIGFueV0KCQlpZihhW2ldPDAgJiYgY250W3Bvc10gPT0gMCkKCQkJdXBkYXRlKHBvcywwKTsKCQlpbnQgcmVzID0gcXVlcnkoKTsKCQlwcmludGYoIiVkXG4iLChyZXMgPT0gMCk/MTpyZXMpOwoKCX0KCglyZXR1cm4gMDsKfQ==