#include <bits/stdc++.h>   #pragma GCC optimize( O3 ,  unroll-loops )   #pragma GCC target( avx2 )   using namespace std;   inline long long add(long long a, long long b) {     return ((a + b) < 1000000007 ? (a + b) : (a + b - 1000000007));   }   int prime[1000005];   void seive() {     prime[0] = prime[1] = 1;     for (int i = 2; i <= sqrt(1000005); i++) {       if (prime[i]) continue;       for (int j = 2 * i; j <= 1000005; j += i) {         prime[j] = 1;       }     }   }   inline long long sub(long long a, long long b) {     return ((a - b) < 0 ? a - b + 1000000007 : a - b);   }   long long power(long long a, long long b) {     if (b == 0) return 1;     long long y = power(a, b / 2);     y = (y * y) % 1000000007;     if (b & 1) y = (a * y) % 1000000007;     return y;   }   using namespace std;   int main() {     long long n;     cin >> n;     vector<long long> v;     long long fr = 0, tw = 0;     long long a[100005] = {0};     for (long long i = 0; i < n; i++) {       long long x;       cin >> x;       v.push_back(x);       a[x]++;       if (a[x] % 4 == 0) {         fr++;         tw--;       } else if (a[x] % 2 == 0) {         tw++;       }     }     long long q;     cin >> q;     for (long long i = 0; i < q; i++) {       char k;       cin >> k;       long long x;       cin >> x;       if (k ==  - ) {         if (a[x] % 4 == 0) {           fr--;           tw++;         } else if (a[x] % 2 == 0)           tw--;         a[x]--;       } else {         a[x]++;         if (a[x] % 4 == 0) {           fr++;           tw--;         } else if (a[x] % 2 == 0) {           tw++;         }       }       if (fr > 1 || (tw > 1 && fr == 1))         cout <<  YES  << endl;       else         cout <<  NO  << endl;     }   }   