func_code_string: #include <bits/stdc++.h>   using namespace std;   pair<int, int> operator-(const pair<int, int>& lhs, const pair<int, int>& rhs) {     return pair<int, int>(lhs.first - rhs.first, lhs.second - rhs.second);   }   int x[19] = {0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 1, 2, 3, 4, 2, 3, 4};   int y[19] = {0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4};   vector<int> ms;   int dp[1 << 19];   bool f(int u) {     if (dp[u] >= 0) return dp[u];     for (auto m : ms) {       if ((m & u) != m) continue;       if (!f(u ^ m)) {         return dp[u] = 1;       }     }     return dp[u] = 0;   }   int main() {     memset(dp, -1, sizeof(dp));     vector<pair<int, int> > ps;     for (int u = 1; u < (1 << 19); u++) {       ps.clear();       for (int i = 0; i < 19; i++) {         if (u & (1 << i)) {           ps.push_back(pair<int, int>(x[i], y[i]));         }       }       if (ps.size() == 1) {         ms.push_back(u);         continue;       }       sort(ps.begin(), ps.end());       pair<int, int> d = ps[1] - ps[0];       if ((d.first == 0 && d.second == 1) || (d.first == 1 && d.second == 0) ||           (d.first == 1 && d.second == 1)) {         bool ok = true;         for (int i = 2; i < ps.size(); i++) {           ok &= (ps[i] - ps[i - 1] == d);         }         if (ok) {           ms.push_back(u);         }       }     }     char buf[10];     int v = 0;     for (int i = 0; i < 19; i++) {       scanf( %s , buf);       if (buf[0] ==  O ) {         v |= 1 << i;       }     }     if (f(v)) {       puts( Karlsson );     } else {       puts( Lillebror );     }     return 0;   }   