#include <bits/stdc++.h>
using namespace std;
int get_state(vector<vector<bool> > &grid) {
  int k = 0;
  int bit = 0;
  for (vector<bool> &v : grid)
    for (bool b : v) {
      k |= b << bit;
      bit++;
    }
  return k;
}
bool win(int state, vector<int> &moves, vector<int> &memo) {
  if (state == 0) return 0;
  int &cache = memo[state];
  if (cache != -1) return cache;
  for (int i : moves) {
    if ((state & i) == i)
      if (!win(state ^ i, moves, memo)) return cache = 1;
  }
  return cache = 0;
}
int main() {
  cin.sync_with_stdio(0), cin.tie(0);
  vector<vector<bool> > grid{vector<bool>(3), vector<bool>(4), vector<bool>(5),
                             vector<bool>(4), vector<bool>(3)};
  for (vector<bool> &v : grid)
    for (int i = 0; i < v.size(); i++) {
      char c;
      cin >> c;
      v[i] = c == 'O';
    }
  int state = get_state(grid);
  set<int> moves;
  for (int si = 0, r = 0; r < grid.size(); r++) {
    for (int c = 0; c < grid[r].size(); c++, si++) {
      int s = 0;
      for (int c2 = c; c2 < grid[r].size(); c2++) {
        s |= 1 << (si + c2 - c);
        moves.insert(s);
      }
    }
  }
  for (int si = 0, r = 0; r < grid.size(); r++) {
    for (int c = 0; c < grid[r].size(); c++, si++) {
      int s = 0, pos = si;
      for (int c2 = c, r2 = r; r2 < grid.size() && c2 < grid[r2].size(); r2++) {
        s |= 1 << pos;
        moves.insert(s);
        pos += grid[r2].size();
        if (r2 < 2) pos++, c2++;
      }
    }
  }
  for (int si = 0, r = 0; r < grid.size(); r++) {
    for (int c = 0; c < grid[r].size(); c++, si++) {
      int s = 0, pos = si;
      for (int c2 = c, r2 = r; r2 < grid.size() && c2 >= 0; r2++) {
        s |= 1 << pos;
        moves.insert(s);
        pos += grid[r2].size();
        if (r2 >= 2) pos--, c2--;
      }
    }
  }
  vector<int> m;
  for (int i : moves) m.push_back(i);
  vector<int> memo(state + 1, -1);
  cout << (win(state, m, memo) ? "Karlsson" : "Lillebror");
}
