#include <bits/stdc++.h>
#include <set>
#include <vector>
using namespace std;
multiset<long long> staw;
long long redukuj[400000];
int redukuj_size = 0;
long long s,k;
void ile_szprotek(){
//cout<<"szczupak mam: "<<s<<" chce miec: "<<k<<"\n";
redukuj_size = 0;
long long ile = 0 ;
while(1){
if(k<=s)break;
auto it = staw.lower_bound(s-1);
if(*it==-1)break;
while(*it >= s)it--;
if(*it==-1)break;
s+=(*it);
redukuj[redukuj_size++]=(*it);
staw.erase(it);
ile++;
// cout<<"mam: "<<s<<" chce miec: "<<k<<"\n";
}
for(int i = 0 ;i<redukuj_size;i++)
staw.insert(redukuj[i]);
if(s<k){ile = -1;}
cout<<ile<<"\n";
}
int main() {
int n, q;
long long w;
int akcja;
cin >> n;
while (n--) {
cin >> w;
staw.insert(w);
}
staw.insert(-1);
staw.insert(1000000000000000000ll);//nie wpływa bo nigdy jej nie zje;
cin >> q;
while (q--) {
cin >> akcja;
if (akcja == 1) {
cin>>s>>k;
ile_szprotek();
} else if (akcja == 2) {
cin >> w;
staw.insert(w);
} else if (akcja == 3) {
cin >> w;
staw.erase(staw.find(w));
}
}
return 0;
}