func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double eps = 1e-9;   const long double pi = acos(-1.0);   int gcd(int a, int b) { return (b == 0) ? a : gcd(b, a % b); }   int xabs(int a) { return a > 0 ? a : -a; }   struct spoint {     double x;     double y;     int id;     spoint();     spoint(double x, double y) : x(x), y(y){};   };   struct svector {     double x;     double y;     svector();     svector(double x, double y) : x(x), y(y) {}     svector(spoint a, spoint b) {       x = b.x - a.x;       y = b.y - a.y;     }     double len() const { return sqrt((x * x) + (y * y)); }     friend svector operator+(const svector a, const svector b) {       return svector(a.x + b.x, a.y + b.y);     }     friend bool operator==(const svector a, const svector b) {       return (a.x == b.x && a.y == b.y);     }     friend double operator*(const svector a, const svector b) {       return a.x * b.x + a.y * b.y;     }   };   int main() {     vector<spoint> mas;     for (int i = 0; i < 8; i++) {       double a, b;       cin >> a >> b;       mas.push_back(spoint(a, b));     }     for (int i = 0; i < 5; i++) {       for (int k = i + 1; k < 6; k++) {         for (int j = k + 1; j < 7; j++) {           for (int z = j + 1; z < 8; z++) {             svector a1(mas[i], mas[k]);             svector b1(mas[i], mas[j]);             svector c1(mas[i], mas[z]);             if ((a1 + b1 == c1 && fabs(a1.len() - b1.len()) < eps &&                  a1 * b1 == 0) ||                 (a1 + c1 == b1 && fabs(a1.len() - c1.len()) < eps &&                  a1 * c1 == 0) ||                 (b1 + c1 == a1 && fabs(c1.len() - b1.len()) < eps &&                  b1 * c1 == 0)) {               vector<spoint> mm;               vector<int> qw;               for (int q = 0; q < 8; q++) {                 if (q != i && q != k && q != j && q != z) {                   mm.push_back(mas[q]);                   qw.push_back(q);                 }               }               svector a2(mm[0], mm[1]);               svector b2(mm[0], mm[2]);               svector c2(mm[0], mm[3]);               if ((a2 + b2 == c2 && a2 * b2 == 0) ||                   (a2 + c2 == b2 && a2 * c2 == 0) ||                   (b2 + c2 == a2 && b2 * c2 == 0)) {                 cout <<  YES  << endl;                 cout << i + 1 <<     << k + 1 <<     << j + 1 <<     << z + 1                      << endl;                 cout << qw[0] + 1 <<     << qw[1] + 1 <<     << qw[2] + 1 <<                          << qw[3] + 1 << endl;                 return 0;               }             }           }         }       }     }     cout <<  NO ;     return 0;   }   