func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     int x, y, z;   } a[10];   int flag;   long long v[5];   long long dist(int i, int j) {     long long x = a[i].x - a[j].x;     long long y = a[i].y - a[j].y;     long long z = a[i].z - a[j].z;     return x * x + y * y + z * z;   }   int ok() {     int cnt = 0;     for (int i = 1; i < 8; i++)       for (int j = 0; j < i; j++) {         long long w = dist(i, j);         if (!cnt)           v[++cnt] = w;         else {           int k = 1;           while (k <= cnt && v[k] != w) k++;           if (k > cnt && cnt == 3) return 0;           if (k > cnt) v[++cnt] = w;         }       }     if (cnt == 3) return 1;     return 0;   }   void dfs(int p) {     if (flag) return;     if (p == 8) {       if (ok()) flag = 1;       return;     }     node tmp = a[p];     dfs(p + 1);     if (!flag) {       a[p].y = tmp.z;       a[p].z = tmp.y;       dfs(p + 1);     }     if (!flag) {       a[p].x = tmp.y;       a[p].y = tmp.x;       a[p].z = tmp.z;       dfs(p + 1);     }     if (!flag) {       a[p].x = tmp.y;       a[p].y = tmp.z;       a[p].z = tmp.x;       dfs(p + 1);     }     if (!flag) {       a[p].x = tmp.z;       a[p].y = tmp.x;       a[p].z = tmp.y;       dfs(p + 1);     }     if (!flag) {       a[p].x = tmp.z;       a[p].y = tmp.y;       a[p].z = tmp.x;       dfs(p + 1);     }   }   int main() {     for (int i = 0; i < 8; i++) cin >> a[i].x >> a[i].y >> a[i].z;     dfs(0);     if (!flag)       puts( NO );     else {       puts( YES );       for (int i = 0; i < 8; i++) printf( %d %d %d n , a[i].x, a[i].y, a[i].z);     }   }   