#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
int sz[5] = {3, 4, 5, 4, 3};
int x[5][5] = {
    {-2, 0, 2}, {-3, -1, 1, 3}, {-4, -2, 0, 2, 4}, {-3, -1, 1, 3}, {-2, 0, 2}};
int dx[6] = {-1, -1, 0, 1, 1, 0};
int dy[6] = {-1, 1, 2, 1, -1, -2};
int C[10][10];
int memo[1 << 19][2];
map<pair<int, int>, int> cord2id;
map<int, pair<int, int> > id2cord;
int dp(int mask, int turn, int debug = 0) {
  if (debug == 1) {
  }
  if (!mask) return memo[mask][turn] = 1 - turn;
  if (~memo[mask][turn]) return memo[mask][turn];
  for (int i = 0; i < 19; ++i) {
    if (mask & (1 << i)) {
      pair<int, int> pos = id2cord[i];
      int maski = mask - (1 << i);
      if (dp(maski, 1 - turn, debug + 1) == turn) {
        return memo[mask][turn] = turn;
      }
      for (int dir = 0; dir < 6; ++dir) {
        int mv = 1;
        int xx = pos.first;
        int yy = pos.second;
        maski = mask - (1 << i);
        while (cord2id.find({xx + dx[dir] * mv, yy + dy[dir] * mv}) !=
                   cord2id.end() &&
               (1 << cord2id[{xx + dx[dir] * mv, yy + dy[dir] * mv}]) & mask) {
          maski -= (1 << cord2id[{xx + dx[dir] * mv, yy + dy[dir] * mv}]);
          mv++;
          if (dp(maski, 1 - turn, debug + 1) == turn) {
            return memo[mask][turn] = turn;
          }
        }
      }
    }
  }
  return memo[mask][turn] = 1 - turn;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int cnt = 0;
  int mask = 0;
  for (int i = -2; i <= 2; ++i) {
    for (int j = 0; j < sz[i + 2]; ++j) {
      char c;
      cin >> c;
      if (c != '.') {
        C[i + 4][x[i + 2][j] + 4] = 1;
        mask |= (1 << cnt);
      }
      cord2id[{i + 4, x[i + 2][j] + 4}] = cnt;
      id2cord[cnt] = {i + 4, x[i + 2][j] + 4};
      cnt++;
    }
  }
  memset(memo, -1, sizeof(memo));
  if (dp(mask, 0)) {
    cout << "Lillebror\n";
  } else {
    cout << "Karlsson\n";
  }
}
