func_code_string: #include <bits/stdc++.h>   using namespace std;   #pragma comment(linker,  /STACK:64000000 )   char buf[1 << 7];   string s;   int smask;   int D1[5][5] = {{0, 3, 7, -1, -1},                   {1, 4, 8, 12, -1},                   {2, 5, 9, 13, 16},                   {6, 10, 14, 17, -1},                   {11, 15, 18, -1, -1}};   int D2[5][5] = {{2, 6, 11, -1, -1},                   {1, 5, 10, 15, -1},                   {0, 4, 9, 14, 18},                   {3, 8, 13, 17, -1},                   {7, 12, 16, -1, -1}};   int D3[5][5] = {{0, 1, 2, -1, -1},                   {3, 4, 5, 6, -1},                   {7, 8, 9, 10, 11},                   {12, 13, 14, 15, -1},                   {16, 17, 18, -1, -1}};   inline void init() {     int m = 0;     smask = 0;     for (int i = 0; i < 5; ++i) {       gets(buf);       s = string(buf);       int l = (int)s.length();       string stringstream =   ;       for (int j = 0; j < l; ++j)         if (s[j] ==  .  || s[j] ==  O ) stringstream += s[j];       s = stringstream;       l = (int)s.length();       for (int j = 0; j < l; ++j) {         if (s[j] ==  O ) smask |= (1 << m);         ++m;       }     }   }   int f[1 << 20];   int rec(int mask) {     if (f[mask] != -1) return f[mask];     for (int x = 0; x < 5; ++x) {       int n = 3;       if (x == 1 || x == 3) n = 4;       if (x == 2) n = 5;       for (int i = 0; i < n; ++i) {         int nmask = mask;         for (int j = i; j < n; ++j) {           int p = D1[x][j];           if (!(mask & (1 << p))) break;           nmask ^= (1 << p);           if (!rec(nmask)) return f[mask] = 1;         }       }     }     for (int x = 0; x < 5; ++x) {       int n = 3;       if (x == 1 || x == 3) n = 4;       if (x == 2) n = 5;       for (int i = 0; i < n; ++i) {         int nmask = mask;         for (int j = i; j < n; ++j) {           int p = D2[x][j];           if (!(mask & (1 << p))) break;           nmask ^= (1 << p);           if (!rec(nmask)) return f[mask] = 1;         }       }     }     for (int x = 0; x < 5; ++x) {       int n = 3;       if (x == 1 || x == 3) n = 4;       if (x == 2) n = 5;       for (int i = 0; i < n; ++i) {         int nmask = mask;         for (int j = i; j < n; ++j) {           int p = D3[x][j];           if (!(mask & (1 << p))) break;           nmask ^= (1 << p);           if (!rec(nmask)) return f[mask] = 1;         }       }     }     return f[mask] = 0;   }   int main() {     init();     memset(f, -1, sizeof f);     if (rec(smask))       puts( Karlsson );     else       puts( Lillebror );     return 0;   }   