pub use __cargo_equip::prelude::*; use prime_factorization::prime_factorization; use proconio::input; fn main() { // let mut stdin = LineSource::new(BufReader::new(io::stdin())); // macro_rules! input(($($tt:tt)*) => (proconio::input!(from &mut stdin, $($tt)*))); input! { n:usize, a:[usize;n] } let mut b = 0; for a in a { let pf = prime_factorization(a); let mut v = 0; for v2 in pf.values() { v ^= v2 % 3; } b ^= v; } println!("{}", if b != 0 { "Alice" } else { "Bob" }); } // The following code was expanded by `cargo-equip`. /// # Bundled libraries /// /// - `prime_factorization 0.1.0 (path+███████████████████████████████████████████████████████████████████████████)` published in **missing** licensed under `Unlicense` as `crate::__cargo_equip::crates::prime_factorization` #[cfg_attr(any(), rustfmt::skip)] #[allow(unused)] mod __cargo_equip { pub(crate) mod crates { pub mod prime_factorization {use std::collections::BTreeMap;pub fn prime_factorization(n:usize)->BTreeMap{assert!(n>0);let mut res=BTreeMap::new();let mut nn=n;for i in 2..{if i*i>n{break;}let mut cnt=0;while nn%i==0{nn/=i;cnt+=1;}if cnt==0{continue;}res.insert(i,cnt);}if nn!=1{res.insert(nn,1);}res}} } pub(crate) mod macros { pub mod prime_factorization {} } pub(crate) mod prelude {pub use crate::__cargo_equip::crates::*;} mod preludes { pub mod prime_factorization {} } }