#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > AdjList1, AdjList2, AdjList3;
int array[1];
void init() {
  AdjList1.assign(19, vector<int>());
  AdjList1[0].push_back(1);
  AdjList1[1].push_back(2);
  AdjList1[3].push_back(4);
  AdjList1[4].push_back(5);
  AdjList1[5].push_back(6);
  AdjList1[7].push_back(8);
  AdjList1[8].push_back(9);
  AdjList1[9].push_back(10);
  AdjList1[10].push_back(11);
  AdjList1[12].push_back(13);
  AdjList1[13].push_back(14);
  AdjList1[14].push_back(15);
  AdjList1[16].push_back(17);
  AdjList1[17].push_back(18);
  AdjList2.assign(19, vector<int>());
  AdjList2[0].push_back(3);
  AdjList2[3].push_back(7);
  AdjList2[1].push_back(4);
  AdjList2[4].push_back(8);
  AdjList2[8].push_back(12);
  AdjList2[2].push_back(5);
  AdjList2[5].push_back(9);
  AdjList2[9].push_back(13);
  AdjList2[13].push_back(16);
  AdjList2[6].push_back(10);
  AdjList2[10].push_back(14);
  AdjList2[14].push_back(17);
  AdjList2[11].push_back(15);
  AdjList2[15].push_back(18);
  AdjList3.assign(19, vector<int>());
  AdjList3[2].push_back(6);
  AdjList3[6].push_back(11);
  AdjList3[1].push_back(5);
  AdjList3[5].push_back(10);
  AdjList3[10].push_back(15);
  AdjList3[0].push_back(4);
  AdjList3[4].push_back(9);
  AdjList3[9].push_back(14);
  AdjList3[14].push_back(18);
  AdjList3[3].push_back(8);
  AdjList3[8].push_back(13);
  AdjList3[13].push_back(17);
  AdjList3[7].push_back(12);
  AdjList3[12].push_back(16);
}
int temp;
vector<int> save;
void dfs1(int nodo, int prof, int mask) {
  if (mask & (1 << nodo))
    ;
  else
    return;
  if (prof == 0) return;
  save.push_back(nodo);
  temp ^= (1 << nodo);
  for (int i = int(0); i < int(AdjList1[nodo].size()); i++) {
    int v = AdjList1[nodo][i];
    dfs1(v, prof - 1, mask);
  }
}
void dfs2(int nodo, int prof, int mask) {
  if (mask & (1 << nodo))
    ;
  else
    return;
  if (prof == 0) return;
  save.push_back(nodo);
  temp ^= (1 << nodo);
  for (int i = int(0); i < int(AdjList2[nodo].size()); i++) {
    int v = AdjList2[nodo][i];
    dfs2(v, prof - 1, mask);
  }
}
void dfs3(int nodo, int prof, int mask) {
  if (mask & (1 << nodo))
    ;
  else
    return;
  if (prof == 0) return;
  save.push_back(nodo);
  temp ^= (1 << nodo);
  for (int i = int(0); i < int(AdjList3[nodo].size()); i++) {
    int v = AdjList3[nodo][i];
    dfs3(v, prof - 1, mask);
  }
}
void imp(int mask) {
  for (int i = int(0); i < int(19); i++) {
    if (mask & (1 << i))
      cout << 1;
    else
      cout << 0;
  }
  cout << endl;
}
int memo[1000000];
int grundy(int mask) {
  if (memo[mask] != -1) return memo[mask];
  set<int> mex;
  for (int i = int(0); i < int(5); i++) {
    for (int j = int(0); j < int(19); j++) {
      save.clear();
      temp = mask;
      dfs1(j, i + 1, mask);
      if (save.size() == i + 1) mex.insert(grundy(temp));
    }
  }
  for (int i = int(0); i < int(5); i++) {
    for (int j = int(0); j < int(19); j++) {
      save.clear();
      temp = mask;
      dfs2(j, i + 1, mask);
      if (save.size() == i + 1) mex.insert(grundy(temp));
    }
  }
  for (int i = int(0); i < int(5); i++) {
    for (int j = int(0); j < int(19); j++) {
      save.clear();
      temp = mask;
      dfs3(j, i + 1, mask);
      if (save.size() == i + 1) mex.insert(grundy(temp));
    }
  }
  int ant = -1;
  for (typeof mex.begin() it = mex.begin(); it != mex.end(); it++) {
    if (*it == ant + 1)
      ant++;
    else
      break;
  }
  return memo[mask] = ant + 1;
}
int main() {
  init();
  string cad;
  int mask = 0;
  int cont = 0;
  for (int i = int(0); i < int(5); i++) {
    getline(cin, cad);
    for (int j = int(0); j < int(cad.size()); j++) {
      if (cad[j] != ' ') {
        if (cad[j] == 'O') {
          mask |= (1 << cont);
        }
        cont++;
      }
    }
  }
  if (mask == ((1 << 19) - 1)) {
    cout << "Karlsson" << endl;
    return 0;
  }
  memset(memo, -1, sizeof memo);
  if (grundy(mask) == 0)
    cout << "Lillebror" << endl;
  else
    cout << "Karlsson" << endl;
  return 0;
}
