#include <bits/stdc++.h>
const int MAXN = 2e5 + 10;
int n, f;
bool isp(int x) {
  for (int i = 2; i * i <= x; i++) {
    if (x % i == 0) return 0;
  }
  return 1;
}
bool check(int x) {
  for (int i = 2; i * i <= x; i++) {
    if (x % i == 0) {
      return isp(x / i);
    }
  }
  return 1;
}
std::bitset<MAXN> ok;
std::bitset<MAXN> vis[200];
int sg[MAXN];
void gao() {
  std::vector<int> ok;
  for (int i = 2; i <= 2e5; i++) {
    if (check(i) && i != f) ok.push_back(i);
  }
  ok.resize(15000);
  for (int i = 1; i <= 2e5; i++) {
    static bool vis[500];
    memset(vis, 0, sizeof vis);
    for (int j : ok) {
      if (i - j < 1) break;
      vis[sg[i - j]] = 1;
    }
    for (int &j = sg[i] = 0; vis[j]; j++)
      ;
  }
}
int main() {
  scanf("%d%d", &n, &f);
  gao();
  int ans = 0;
  while (n--) {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    ans ^= sg[b - a] ^ sg[c - b];
  }
  puts(ans ? "Alice\nBob" : "Bob\nAlice");
}
