#include <iostream>
#include <map>
int main()
{
std::cin.tie(0);
std::ios_base::sync_with_stdio(false);
long long int n;
std::map<long long int, long long int> fish;
std::cin>>n;
for (long long int nn = 0; nn < n; ++nn)
{
long long int w;
std::cin>>w;
++fish[w];
}
long long int q;
std::cin>>q;
for(long long int qq = 0; qq < q; ++qq)
{
int opt;
std::cin>>opt;
switch(opt)
{
case 1:
{
long long int s, k;
std::cin>>s>>k;
std::map<long long int, long long int> fishCp (fish);
long long int cnt = 0;
long long int diff = k - s;
bool ok = true;
while(diff > 0)
{
if(fishCp.empty())
{
ok = false;
break;
}
auto it = fishCp.lower_bound(s);
if(it == fishCp.begin())
{
ok = false;
break;
}
--it;
diff -= it->first;
s += it->first;
if(it->second == 1)
{
fishCp.erase(it);
}
else
{
--it->second;
}
++cnt;
}
if(ok)
{
std::cout<<cnt<<"\n";
}
else
{
std::cout<<"-1\n";
}
break;
}
case 2:
{
long long int w;
std::cin>>w;
++fish[w];
break;
}
case 3:
{
long long int w;
std::cin>>w;
if(fish[w] == 1)
{
fish.erase(w);
}
else
{
--fish[w];
}
break;
}
}
}
}