#include using namespace std; #define INF INT_MAX #define LINF LLONG_MAX #define pb(x) push_back(x) #define all(x) (x).begin(), (x).end() #define debug(x) cerr << #x << " = " << x << endl; using ll = long long; using pii = pair; using vi = vector; using vii = vector; using vll = vector; void init(){ #ifdef LOCAL freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); freopen("log.txt", "w", stderr); #else cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); #endif } const int N = 200000; int currIdx = 0; int ST[N] = {0}; int ele[N]; void updateTree(int p, int v){ ST[N/2 + p] = v; p += N/2; for(int i=p; i>1; i>>=1){ ST[i >> 1] = __gcd(ST[i], ST[i^1]); } } int main(){ init(); unordered_map mp; int q, x; cin >> q; char c; while(q--){ cin >> c >> x; switch(c){ case '+': mp[x].second++; if(mp[x].second == 1){ mp[x].first = currIdx; ele[currIdx] = x; updateTree(currIdx, x); currIdx++; } break; case '-': mp[x].second--; if(mp[x].second == 0){ updateTree(mp[x].first, 0); mp.erase(x); } break; } if(mp.size() == 0) cout << 1 << endl; else cout << ST[1] << endl; } return 0; }