#include template struct SegmentTree { int n; std::vector info; SegmentTree(int n): n(n-1),info(4< init): SegmentTree(init.size()) { std::function build= [&] (int pl,int l,int r) { if (l==r) { info[pl]=init[l]; return; } int mid=(l+r)>>1; build(pl*2,l,mid); build(pl*2+1,mid+1,r); pull(pl); }; build (1,1,n); } void pull(int pl) { info[pl]=info[pl*2]+info[pl*2+1]; } void modify(int pl,int l,int r,int x,const Info &v) { if (l==r) { info[pl]=v; return; } int mid=(l+r)>>1; if (x<=mid) modify(pl*2,l,mid,x,v); if (x>mid) modify(pl*2+1,mid+1,r,x,v); pull(pl); } void modify(int x,const Info &v) { modify(1,1,n,x,v); } Info rangeQuery(int pl,int l,int r,int x,int y) { if ((l>y)||(x>r)) return Info(); if ((x<=l)&&(r<=y)) return info[pl]; int mid=(l+r)>>1; return rangeQuery(pl*2,l,mid,x,y)+rangeQuery(pl*2+1,mid+1,r,x,y); } Info rangeQuery(int x,int y) { return rangeQuery(1,1,n,x,y); } }; using namespace std; int _; int n,l,r,m; int a[200010]; int q[500010]; int uu[500010]; int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n>>m; int fl=0,fll=0,ai=1; for (int i=1; i<=n; i++) { cin>>a[i]; fl=fl^(a[i]/m); fll=fll^(a[i]%m); } if (fl!=0) ai=1; else { if (fll!=0) ai=1; else ai=0; } if (ai) cout<<"Alice"; else cout<<"Bob"; return 0; }