#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10, maxpos = 5e4;
bool prime[maxn];
int d[maxn];
int main() {
  int n, f;
  scanf("%d%d", &n, &f);
  for (int i = 2; i < maxpos; i++) {
    if (!prime[i]) {
      for (int j = 2 * i; j < maxpos; j += i) prime[j] = true;
    }
  }
  vector<int> pos;
  for (int i = 2; i < maxpos; i++) {
    if (!prime[i]) {
      if (i != f) pos.push_back(i);
      for (int j = 2; (j * i < maxpos && j <= i); j++) {
        if (!prime[j] && j * i != f) pos.push_back(j * i);
      }
    }
  }
  sort(pos.begin(), pos.end());
  const int c = 1000;
  for (int i = 1; i < maxn; i++) {
    bool used[c];
    for (int j = 0; j < c; j++) used[j] = false;
    for (int j = 0; j < pos.size(); j++) {
      if (pos[j] >= i) break;
      used[d[i - pos[j]]] = true;
    }
    for (int j = 0; j < c; j++) {
      if (!used[j]) {
        d[i] = j;
        break;
      }
    }
  }
  int ans = 0;
  for (int i = 0; i < n; i++) {
    int b, w, r;
    scanf("%d%d%d", &b, &w, &r);
    ans ^= d[r - w];
    ans ^= d[w - b];
  }
  if (ans == 0)
    printf("Bob\nAlice\n");
  else
    printf("Alice\nBob\n");
  return 0;
}
