// Original C++ solution (slower):
/// [Amberjack] CUT BEGIN

#include <bits/stdc++.h>

using namespace std;



typedef long long ll;

typedef pair<int,int> pii;

typedef pair<ll,ll> pll;

typedef vector<int> vi;

typedef vector<ll> vl;



typedef int _loop_int;

#define __GET_REP_MACRO(_1,_2,_3,NAME,...) NAME

#define __REP0(i,n) for(_loop_int i=0;i<(n);++i)

#define __REP1(i,a,b) for(_loop_int i=(a);i<(b);++i)

#define __REPR0(i,n) for(_loop_int i=(n)-1;i>=0;--i)

#define __REPR1(i,a,b) for(_loop_int i=(b)-1;i>=(a);--i)

#define REP(...) __GET_REP_MACRO(__VA_ARGS__,__REP1,__REP0)(__VA_ARGS__)

#define REPR(...) __GET_REP_MACRO(__VA_ARGS__,__REPR1,__REPR0)(__VA_ARGS__)



#ifdef BURI

#define __DEBUG0() "Hello"

#define __DEBUG1(x) #x"("<<(x)<<")"

#define __DEBUG2(x,...) #x"("<<(x)<<"), " __DEBUG1(__VA_ARGS__)

#define __DEBUG3(x,...) #x"("<<(x)<<"), " __DEBUG2(__VA_ARGS__)

#define __DEBUG4(x,...) #x"("<<(x)<<"), " __DEBUG3(__VA_ARGS__)

#define __DEBUG5(x,...) #x"("<<(x)<<"), " __DEBUG4(__VA_ARGS__)

#define __GET_DEBUG_MACRO(_1,_2,_3,_4,_5,NAME,...) NAME

#define __DEBUG(...) __GET_DEBUG_MACRO(__VA_ARGS__,__DEBUG5,__DEBUG4,__DEBUG3,__DEBUG2,__DEBUG1,__DEBUG0)(__VA_ARGS__)

#define DEBUG(...) cerr<<__DEBUG(__VA_ARGS__)<<endl

#else

#define DEBUG(...)

#endif



inline void getll(ll &x){

  int sgn=1;x=0;

  char c=getchar();

  while(c!='-'&&(c<'0'||c>'9'))c=getchar();

  if(c=='-') sgn=-1; else x=c-'0';

  c=getchar();

  while('0'<=c&&c<='9'){

    x*=10;

    x+=c-'0';

    c=getchar();

  }

  x*=sgn;

}

inline void read(ll &x){getll(x);}

inline void read(int &x){ll y;getll(y);x=y;}

inline void read(float &x){scanf("%f",&x);}

inline void read(double &x){scanf("%lf",&x);}

inline void read(long double &x){scanf("%Lf",&x);}

inline void read(char *s){scanf("%s",s);}

inline void read(string &s){int len=s.size();char *buf=(char*)malloc(len*sizeof(char));scanf("%s",buf);s=string(buf);free(buf);}

inline void read(char &c){char *buf=(char*)malloc(5*sizeof(char));scanf("%s",buf);c=buf[0];free(buf);}

inline void read(){}

template<typename S,typename ...T>

inline void read(S& first, T&... rest){

  read(first);

  read(rest...);

}

/// [/Amberjack] CUT END



int main(){

  int n,a,b;

  string s(125252,' ');

  read(n,a,b,s);

  REP(i,n){

    if(s[i]=='a'){

      if(a+b>0){

        puts("Yes");

        --a;

      }else{

        puts("No");

      }

    }else if(s[i]=='b'){

      if(a+b>0 && b>0){

        puts("Yes");

        --b;

      }else{

        puts("No");

      }

    }else{

      puts("No");

    }

  }

  return 0;

}


// Optimized solution to the same problem (faster):
/// [Amberjack] CUT BEGIN

#include <bits/stdc++.h>

using namespace std;



typedef long long ll;

typedef pair<int,int> pii;

typedef pair<ll,ll> pll;

typedef vector<int> vi;

typedef vector<ll> vl;



typedef int _loop_int;

#define __GET_REP_MACRO(_1,_2,_3,NAME,...) NAME

#define __REP0(i,n) for(_loop_int i=0;i<(n);++i)

#define __REP1(i,a,b) for(_loop_int i=(a);i<(b);++i)

#define __REPR0(i,n) for(_loop_int i=(n)-1;i>=0;--i)

#define __REPR1(i,a,b) for(_loop_int i=(b)-1;i>=(a);--i)

#define REP(...) __GET_REP_MACRO(__VA_ARGS__,__REP1,__REP0)(__VA_ARGS__)

#define REPR(...) __GET_REP_MACRO(__VA_ARGS__,__REPR1,__REPR0)(__VA_ARGS__)



#ifdef BURI

#define __DEBUG0() "Hello"

#define __DEBUG1(x) #x"("<<(x)<<")"

#define __DEBUG2(x,...) #x"("<<(x)<<"), " __DEBUG1(__VA_ARGS__)

#define __DEBUG3(x,...) #x"("<<(x)<<"), " __DEBUG2(__VA_ARGS__)

#define __DEBUG4(x,...) #x"("<<(x)<<"), " __DEBUG3(__VA_ARGS__)

#define __DEBUG5(x,...) #x"("<<(x)<<"), " __DEBUG4(__VA_ARGS__)

#define __GET_DEBUG_MACRO(_1,_2,_3,_4,_5,NAME,...) NAME

#define __DEBUG(...) __GET_DEBUG_MACRO(__VA_ARGS__,__DEBUG5,__DEBUG4,__DEBUG3,__DEBUG2,__DEBUG1,__DEBUG0)(__VA_ARGS__)

#define DEBUG(...) cerr<<__DEBUG(__VA_ARGS__)<<endl

#else

#define DEBUG(...)

#endif



#define gc getchar_unlocked

inline void getll(ll &x){

  int sgn=1;x=0;

  char c=gc();

  while(c!='-'&&(c<'0'||c>'9'))c=gc();

  if(c=='-') sgn=-1; else x=c-'0';

  c=gc();

  while('0'<=c&&c<='9'){

    x*=10;

    x+=c-'0';

    c=gc();

  }

  x*=sgn;

}

inline void read(ll &x){getll(x);}

inline void read(int &x){ll y;getll(y);x=y;}

inline void read(float &x){scanf("%f",&x);}

inline void read(double &x){scanf("%lf",&x);}

inline void read(long double &x){scanf("%Lf",&x);}

inline void read(char *s){char *t=s;char c;while((c=gc())==' '||c=='\n');while(c!=' '&&c!='\n'){*t++=c;c=gc();}}

inline void read(string &s){int len=s.size();char *buf=(char*)malloc(len*sizeof(char));scanf("%s",buf);s=string(buf);free(buf);}

inline void read(char &c){char *buf=(char*)malloc(5*sizeof(char));scanf("%s",buf);c=buf[0];free(buf);}

inline void read(){}

template<typename S,typename ...T>

inline void read(S& first, T&... rest){

  read(first);

  read(rest...);

}

/// [/Amberjack] CUT END



int n,a,b;

char s[125252];

int main(){

  read(n,a,b,s);

  REP(i,n){

    if(s[i]=='a'){

      if(a+b>0){

        puts("Yes");

        --a;

      }else{

        puts("No");

      }

    }else if(s[i]=='b'){

      if(a+b>0 && b>0){

        puts("Yes");

        --b;

      }else{

        puts("No");

      }

    }else{

      puts("No");

    }

  }

  return 0;

}


// Fastest known solution for this problem: