#include <string>
#include <vector>
#include <map>
#include <set>
#include <cassert>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <list>

using namespace std;


int main(int argc, char * argv [] ) {
    int N = 0;
    int A = 0;
    int B = 0;
    cin >> N >> A >> B;

    string str;
    cin >> str;

    int passedNum = 0;
    int passedOver = 0;
    int ab = A + B;
    for (int i = 0; i < N; ++i) {
        char ch = str.at(i);
        switch(ch) {
        case 'a':
            if (passedNum < ab) {
                ++passedNum;
                cout << "Yes" << endl;
            } else {
                cout << "No" << endl;
            }
            break;
        case 'b':
            if (passedNum < ab && passedOver < B) {
                ++passedNum;
                ++passedOver;
                cout << "Yes" << endl;
            } else {
                cout << "No" << endl;
            }
            break;
        case 'c':
            cout << "No" << endl;
            break;
        }
    }

//    int t = 0;
//    int n = 0;
//
//    cin >> t;
//    int caseNum = 0;
//    while (t--) {
//        ++caseNum;
//        cin >> n;
//        set<int> uSet;
//        map<int, int> nMap;
//        int maxNum = 1;
//        string str;
//        getline(cin, str);
//        while (n--) {
//            getline(cin, str);
//            stringstream ss(str);
//            int num = 0;
//            bool flag = nMap.empty();
//            set<int> tmp;
//            while (ss >> num) {
//                uSet.insert(num);
//                if (flag) {
//                    nMap[num] = 1;
//                } else {
//                    if (nMap.count(num) != 0 && tmp.count(num) == 0) {
//                        ++nMap[num];
//                        maxNum = max(maxNum, nMap[num]);
//                    }
//                }
//                tmp.insert(num);
//            }
//        }
//
//        cout << "Case #" << caseNum << ":" << endl;
//
//        for (map<int, int>::iterator it = nMap.begin(); it != nMap.end(); ++it) {
//            if (it->second == maxNum)
//                cout << it->first << " ";
//        }
//        cout << endl;
//
//        for (set<int>::iterator it = uSet.begin(); it != uSet.end(); ++it) {
//            cout << *it << " ";
//        }
//        cout << endl;
//    }


//    int t = 0;
//    int n = 0;
//
//    cin >> t;
//    int caseNum = 0;
//    while (t--) {
//        ++caseNum;
//        cin >> n;
//        set<int> uSet;
//        set<int> nSet;
//        do {
//            string str;
//            getline(cin, str);
//            stringstream ss(str);
//            int num = 0;
//            set<int> tmpSet;
//            while (ss >> num) {
//                uSet.insert(num);
//                tmpSet.insert(num);
//            }
//            if (nSet.empty()) {
//                nSet = tmpSet;
//                continue;
//            }
//            set<int> tp;
//            for (set<int>::iterator it = nSet.begin(); it != nSet.end(); ++it) {
//                if (tmpSet.count(*it) != 0) {
//                    tp.insert(*it);
//                }
//            }
//            nSet = tp;
//        } while (--n);
//
//        cout << "Case #" << caseNum << ":" << endl;
//
//        for (set<int>::iterator it = nSet.begin(); it != nSet.end(); ++it) {
//            cout << *it << " ";
//        }
//        cout << endl;
//
//        for (set<int>::iterator it = uSet.begin(); it != uSet.end(); ++it) {
//            cout << *it << " ";
//        }
//        cout << endl;
//    }




//    int t = 0;
//    cin >> t;
//    int caseNum = 0;
//    while (t--) {
//        ++caseNum;
//        cout << "Case " << caseNum << ":" << endl;
//        int n = 0;
//        cin >> n;
//        list<char> str;
//        str.push_back('|');
//        std::list<char>::iterator it = str.begin();
//        while (n--) {
//            int op = 0;
//            cin >> op;
//            switch (op) {
//            case 1:
//                {
//                    char ch = '\0';
//                    cin >> ch;
//                    str.insert(it, ch);
//                }
//                break;
//            case 2:
//                if (it != str.begin()) {
//                    --it;
//                    it = str.erase(it);
//                }
//                break;
//            case 3:
//                if (it != str.begin()) {
//                    --it;
//                    char tmp = *it;
//                    *it = '|';
//                    ++it;
//                    *it = tmp;
//                    --it;
//                }
//                break;
//            case 4:
//                ++it;
//                if (it != str.end()) {
//                    char tmp = *it;
//                    *it = '|';
//                    --it;
//                    *it = tmp;
//                    ++it;
//                } else {
//                    --it;
//                }
//                break;
//            case 5:
//                for (list<char>::iterator iter = str.begin(); iter != str.end(); ++iter) {
//                    cout << *iter;
//                }
//                cout << endl;
//                break;
//            }
//        }
//    }

	return 0;
}


Measured memory_bytes: 896