#include // cout, endl, cin #include // string, to_string, stoi #include // vector #include // min, max, swap, sort, reverse, lower_bound, upper_bound #include // pair, make_pair #include // tuple, make_tuple #include // int64_t, int*_t #include // printf #include // map #include // queue, priority_queue #include // set #include // stack #include // deque #include // unordered_map #include // unordered_set #include // bitset #include // isupper, islower, isdigit, toupper, tolower #include #include #include #include #include #include #include #include //#include using namespace std; using ll=long long; using vll=vector; using vi=vector; using vvi=vector; using P=pair; using vp=vector

; using vvp=vector; #define rep(i,n) for(int i=0; i<(int)(n); i++) #define repi(i,a,b) for(int i=(int)(a); i<(int)(b); i++) #define all(x) (x).begin(),(x).end() #define arr(x) (x).rbegin(),(x).rend() template bool chmin(T&a,const S&b){ return a>b?a=b,1:0; } template bool chmax(T&a,const S&b){ return a seen; map dp; auto f=[&](vi a,int l,int r){ repi(i,l,r+1)a[i]^=1; return a; }; int n=7; auto dfs=[&](auto dfs,vi &v)->int{ if(seen[v]){ return dp[v]; } seen[v]=1; int is=0; rep(r,n)if(v[r]==1){ for(int l=r; l>=0; l--){ if(l!=r && v[l]==1)break; vi b=f(v,l,r); if(!dfs(dfs,b))is=1; } } dp[v]=is; return dp[v]; }; rep(bit,1<>i&1); reverse(all(vs)); rep(i,n)cout<< vs[i]; cout << " " << dfs(dfs,vs) << endl; } */ int n; cin >> n; string s; cin >> s; ll val=0; rep(i,n){ val*=2; if(s[i]=='B')val++; val%=3; } if(val==0){ cout << "Bob" << endl; } else { cout << "Alice" << endl; } } int main(){ int t=1;// cin >> t; rep(test,t)solve(test); }