func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     int x, y;   };   int dist(const point &a, const point &b) {     return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);   }   int main(int argc, char *argv[]) {     point p[8];     int a[8] = {0, 1, 2, 3, 4, 5, 6, 7};     for (int i = 0; i < 8; i++) scanf( %d %d , &p[i].x, &p[i].y);     bool found = false;     do {       int d = dist(p[a[0]], p[a[1]]);       if (d != dist(p[a[0]], p[a[2]]) || d != dist(p[a[1]], p[a[3]]) ||           d != dist(p[a[2]], p[a[3]]))         continue;       if (2 * d != dist(p[a[0]], p[a[3]]) || 2 * d != dist(p[a[1]], p[a[2]]))         continue;       int d1 = dist(p[a[4]], p[a[5]]);       int d2 = dist(p[a[4]], p[a[6]]);       if (d1 != dist(p[a[6]], p[a[7]]) || d2 != dist(p[a[5]], p[a[7]])) continue;       if (d1 + d2 != dist(p[a[5]], p[a[6]]) || d1 + d2 != dist(p[a[4]], p[a[7]]))         continue;       found = true;       break;     } while (next_permutation(a, a + 8));     if (found) {       printf( YES n );       for (int i = 0; i < 4; i++) printf( %s%d , i > 0 ?     :   , a[i] + 1);       printf(  n );       for (int i = 4; i < 8; i++) printf( %s%d , i > 4 ?     :   , a[i] + 1);       printf(  n );     } else {       printf( NO n );     }     return 0;   }   