func_code_string: #include <bits/stdc++.h>   using namespace std;   struct pvec {     long long int x, y;     pvec(long long int x = 0, long long int y = 0) : x(x), y(y) {}     pvec operator-(pvec p) { return pvec(x - p.x, y - p.y); }     bool operator==(pvec p) { return x == p.x and y == p.y; }     long long int dot(pvec p) { return x * p.x + y * p.y; }     long long int abs2() { return x * x + y * y; }   };   pvec v[12], Q[12], R[12];   long long int Qi[12], Ri[12];   long long int perm[][3] = {{1, 2, 3}, {1, 3, 2}, {2, 1, 3},                              {2, 3, 1}, {3, 1, 2}, {3, 2, 1}};   inline bool quadrado() {     for (long long int i = 0; i < 6; i++) {       pvec p0 = Q[0];       pvec p1 = Q[perm[i][0]];       pvec p2 = Q[perm[i][1]];       pvec p3 = Q[perm[i][2]];       pvec v1 = p1 - p0, v2 = p2 - p1, v3 = (p2 - p3), v4 = (p3 - p0);       if (!(v1 == v3 and v2 == v4)) continue;       if (v1.abs2() != v2.abs2()) continue;       if (v1.dot(v2) != 0) continue;       return true;     }     return false;   }   inline bool retangulo() {     for (long long int i = 0; i < 6; i++) {       pvec p0 = R[0];       pvec p1 = R[perm[i][0]];       pvec p2 = R[perm[i][1]];       pvec p3 = R[perm[i][2]];       pvec v1 = p1 - p0, v2 = p2 - p1, v3 = (p2 - p3), v4 = (p3 - p0);       if (!(v1 == v3 and v2 == v4)) continue;       if (v1.dot(v2) != 0) continue;       return true;     }     return false;   }   bool da(long long int u, long long int quad, long long int ret) {     if (quad > 4 or ret > 4) return false;     if (u == 8) {       if (quadrado() and retangulo()) return true;       return false;     }     Q[quad] = v[u];     Qi[quad] = u;     if (da(u + 1, quad + 1, ret)) return true;     R[ret] = v[u];     Ri[ret] = u;     if (da(u + 1, quad, ret + 1)) return true;     return false;   }   int main() {     for (long long int i = 0; i < 8; i++) {       long long int x, y;       cin >> x >> y;       v[i] = pvec(x, y);     }     if (!da(0, 0, 0)) {       cout <<  NO  << endl;     } else {       cout <<  YES  << endl;       for (long long int i = 0; i < 4; i++) {         if (i) printf(   );         cout << Qi[i] + 1;       }       cout << endl;       for (long long int i = 0; i < 4; i++) {         if (i) printf(   );         cout << Ri[i] + 1;       }       cout << endl;     }     return 0;   }   