func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, a[5][8];   int vis[123124];   struct Mp {     int a[30];     Mp() { memset(a, 0, sizeof(a)); }     bool operator<(const Mp &x) const {       for (int i = 0; i < 25; ++i)         if (x.a[i] != a[i]) return a[i] < x.a[i];       return 0;     }     void swap(int &a, int &b, int &c, int &d) {       int t = a;       a = b;       b = c;       c = d;       d = t;     }     Mp Rotate1() {       Mp res = *this;       swap(res.a[1], res.a[3], res.a[4], res.a[2]);       swap(res.a[13], res.a[5], res.a[17], res.a[21]);       swap(res.a[14], res.a[6], res.a[18], res.a[22]);       swap(res.a[15], res.a[7], res.a[19], res.a[23]);       swap(res.a[16], res.a[8], res.a[20], res.a[24]);       swap(res.a[9], res.a[10], res.a[12], res.a[11]);       return res;     }     Mp Rotate2() {       Mp res = *this;       swap(res.a[1], res.a[3], res.a[4], res.a[2]);       swap(res.a[13], res.a[5], res.a[17], res.a[21]);       swap(res.a[14], res.a[6], res.a[18], res.a[22]);       return res;     }     Mp Rotate3() {       Mp res = *this;       swap(res.a[2], res.a[23], res.a[10], res.a[6]);       swap(res.a[4], res.a[21], res.a[12], res.a[8]);       swap(res.a[17], res.a[18], res.a[20], res.a[19]);       return res;     }     bool check() {       for (int i = 1; i <= 24; i += 4) {         for (int j = i + 1; j <= i + 3; ++j)           if (a[j] != a[i]) return 0;       }       return 1;     }     void OUT() {       for (int i = 1; i <= 24; ++i) cout << a[i] <<    ;       cout << endl;     }   };   map<Mp, bool> hs;   int main() {     Mp init;     for (int i = 1; i <= 24; ++i) cin >> init.a[i];     queue<Mp> Q;     Q.push(init);     while (!Q.empty()) {       Mp now = Q.front();       Q.pop();       Mp news;       news = now.Rotate1();       if (!hs[news]) {         hs[news] = 1;         Q.push(news);       }       news = now.Rotate2();       if (news.check()) {         puts( yes );         return 0;       }       news = now.Rotate2().Rotate2().Rotate2();       if (news.check()) {         puts( yes );         return 0;       }       news = now.Rotate3();       if (news.check()) {         puts( yes );         return 0;       }       news = now.Rotate3().Rotate3().Rotate3();       if (news.check()) {         puts( yes );         return 0;       }     }     puts( no );     return 0;   }   