#include #define ll long long #define ull unsigned long long #define pii pair #define pp pair,pair> #define pll pair #define pdd pair #define vii vector #define vll vector #define mat vector> #define lb lower_bound #define ub upper_bound #define pb push_back #define eb emplace_back #define fi first #define sc second #define rep(i,n) for(ll i=0;i=0;i--) #define all(x) x.begin(),x.end() #define sz(x) (ll) (x).size() #define pq priority_queue #define pqg priority_queue,greater> #define LB(v,x) (lower_bound(v.begin(),v.end(),x)-v.begin()) #define UB(v,x) (upper_bound(v.begin(),v.end(),x)-v.begin()) #define ERASE(v) sort(v.begin(),v.end());v.erase(unique(v.begin(),v.end()),v.end()) #define int ll // #define ll int using namespace std; const ll INF = (1 << 30 ) - 1; const ll LLINF = (1LL << 60LL); const ll MOD = 1000000007; const ll mod = 998244353; const ll MAX = 1100000; const double pi = acos(-1); const double eps = 1e-10; ll dx[8] ={1,0,-1,0,1,-1,1,-1}; ll dy[8] ={0,1,0,-1,1,-1,-1,1}; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } ll grundy[10100]; map res; void prime_factor(ll n){ for(ll i=2;i*i<=n;i++){ while(n%i==0){ res[i]++; n/=i; } } if(n!=1) res[n]++; return; } void solve(){ ll n; ll m[1010]; cin>>n; rep(i,n) cin>>m[i]; grundy[0]=0; grundy[1]=0; rep2(num,2,10001){ res.clear(); prime_factor(num); set S; for(auto i:res){ S.insert(grundy[num/i.first]); if(i.second<2) continue; S.insert(grundy[num/(ll)pow(i.first,2)]); } ll g=0; while(S.count(g)!=0) g++; grundy[num]=g; } ll x=0; rep(i,n){ x^=grundy[m[i]]; } if(x==0) cout<<"Bob"<