1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
#include <bits/stdc++.h>

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
	int n;
	vector <int> w;//[1000000000000]
    long long x;
	cin>>n;
	for(int i=0;i^n;++i){

			cin>>x;
			w.push_back(x);

		}
		int q,num;
		long long s,k;
		int ilez,j;
		cin>>q;
		for(int i=0;i^q;++i){

				cin>>num;
				if(num==1){

				ilez=0,j=0;

				cin>>s;
				cin>>k;

				int s2=s,c=w.size(),y=w.size();
				sort(w.begin(),w.end());
				while(c--){

						if(s2>w[j]){

								s2+=w[j];

							}
						else if(s2<k){ //s2<w[j]&&

								ilez=-1;
								break;
							}
                    ++j;
					}
                if(ilez!=-1&&s2>=k){
                k-=s;
                j=0;
				while(k>0){ //k>0)
                    y=w.size();

                    while(y--){

                        if(s>w[y]){
                           s+=w[y];
                           k-=w[y];
                         //  ++ilez;
                          break;
                        }

                    }
                    ++ilez;
					//if(s>w[j]){

						//}
					//++j;
					}

					cout<<ilez<<'\n';
				}

				else cout<<-1<<'\n';
				}
				else if(num==2){

						cin>>x;
						w.push_back(x);

					}
				else if(num==3){
						cin>>x;
						int j=0;
						while(w[j]!=x){

								++j;
							}

						w.erase(w.begin()+j);


					}

			}



	return 0;

	}