#pragma GCC optimize("Ofast") #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define vec vector #define vecd vector #define vecll vector #define Graph vector> #define wGraph vector> #define rep(i, n) for (int i = 0; i < (int)(n); i++) /* rep(i, n) { cout << i; } */ /* for (auto& x: X) { cin >> x; } */ #define krep(i, k, n) for (int i = k; i < (int)(n); i++) #define prep(i, n) for (int i = 1; i <= (int)(n); i++) #define irep(i, n) for (int i = (int)n - 1; i >= 0; i--) #define all(v) v.begin(), v.end() /* vector v = {2, 3, 1} sort(all(v)) */ #define INF INT_MAX #define LINF LLONG_MAX const int dx[4] = {1, 0, -1, 0}; const int dy[4] = {0, 1, 0, -1}; vec pow_vec{1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; vecll pow_vecll{1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000}; void print_vec(vec v) { rep(i, (int)v.size()) { cout << v.at(i); } cout << endl; } void print_vecll(vecll v) { rep(i, (int)v.size()) { cout << v.at(i); } cout << endl; } vec string_to_vec(string s) { vec v(s.size()); rep(i, (int)s.size()) { v.at(i) = s.at(i) - '0'; } return v; } char int_to_alphabet(int i) { // i = 0 -> a // i = 25 -> z return i + 'a'; } int alphabet_to_int(char s) { return s - 'a'; } int mmod(int a, int b) { a += (abs(a / b) + 1) * b; return a % b; } ll mmod(ll a, ll b) { a += (abs(a / b) + 1) * b; return a % b; } bool s_contain(string s, char c) { if (s.find(c) != string::npos) { return true; } else { return false; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); // ---------------------------------------------------------------- ll N; cin >> N; ll A, B; cin >> A >> B; rep(i, N){ int p; cin >> p; if(p==1){ if(A>0){ A--; }else{ cout << i+1 << endl; return 0; } }else if(p==2){ if(B>0){ B--; }else{ cout << i+1 << endl; return 0; } }else if(p==3){ if(A>0 && B>0){ A--; B--; }else{ cout << i+1 << endl; return 0; } } } cout << -1 << endl; // ---------------------------------------------------------------- return 0; }