void solve(int n, int a, int b, string s){
	int cnt_a, cnt_b;
	foreach(ch; s){
		switch(ch){
			case 'a':
				if(cnt_a <a+b){
					writeln("Yes");
					cnt_a++;
				}else writeln("No");
				break;
			case 'b':
				if(cnt_a<a+b && cnt_b<b){
					cnt_a++;
					cnt_b++;
					writeln("Yes");
				}else{
					writeln("No");
				}
				break;
			default:
				writeln("No");
				break;
		}
	}	
}
void main(){
	int n, a, b;
	readf("%d %d %d\n", &n, &a, &b);
	string s = readln().chomp();
	solve(n, a, b, s);
}
     
import std.stdio, std.conv, std.algorithm, std.numeric, std.string, std.math, std.range;
const long mod = 10^^9+7;      
// 1要素のみの入力
T inelm(T= int)(){
	return to!(T)( readln().chomp() );
}
     
// 1行に同一型の複数入力
T[] inln(T = int)(){
	T[] ln;
	foreach(string elm; readln().chomp().split())ln ~= elm.to!T();
	return ln;
}
