func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n;   long long m;   long long t;   void solve() {}   struct point {     long long x, y;   };   bool isSquare(point a, point b, point c, point d) {     long long dist1 =         (long long)(b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y);     long long dist2 =         (long long)(b.x - c.x) * (b.x - c.x) + (b.y - c.y) * (b.y - c.y);     long long dist3 =         (long long)(c.x - d.x) * (c.x - d.x) + (c.y - d.y) * (c.y - d.y);     long long dist4 =         (long long)(a.x - d.x) * (a.x - d.x) + (a.y - d.y) * (a.y - d.y);     return dist1 == dist2 && dist1 == dist3 && dist1 == dist4;   }   bool noZeroArea(point a, point b, point c, point d) {     long long dist1 =         (long long)(b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y);     long long dist2 =         (long long)(b.x - c.x) * (b.x - c.x) + (b.y - c.y) * (b.y - c.y);     long long dist3 =         (long long)(c.x - d.x) * (c.x - d.x) + (c.y - d.y) * (c.y - d.y);     long long dist4 =         (long long)(a.x - d.x) * (a.x - d.x) + (a.y - d.y) * (a.y - d.y);     if (dist1 > 0 && dist2 > 0 && dist3 > 0 && dist4 > 0) return true;     return false;   }   long long IsOrthogonal(point a, point b, point c) {     return (b.x - a.x) * (b.x - c.x) + (b.y - a.y) * (b.y - c.y) == 0;   }   long long IsRectangle(point a, point b, point c, point d) {     return IsOrthogonal(a, b, c) && IsOrthogonal(b, c, d) &&            IsOrthogonal(c, d, a) && noZeroArea(a, b, c, d);   }   long long IsRectangleAnyOrder(point a, point b, point c, point d) {     return IsRectangle(a, b, c, d) || IsRectangle(b, c, a, d) ||            IsRectangle(c, a, b, d);   }   long long IsSquareAnyOrder(point a, point b, point c, point d) {     return (IsRectangle(a, b, c, d) && isSquare(a, b, c, d)) ||            (IsRectangle(b, c, a, d) && isSquare(b, c, a, d)) ||            (IsRectangle(c, a, b, d) && isSquare(c, a, b, d));   }   int main() {     ios_base::sync_with_stdio(false);     point pt[10];     for (int i = 1; i <= 8; i++) {       long long x, y;       cin >> x >> y;       pt[i].x = x;       pt[i].y = y;     }     int mtints[] = {1, 2, 3, 4, 5, 6, 7, 8};     sort(mtints, mtints + 8);     do {       if (IsSquareAnyOrder(pt[mtints[0]], pt[mtints[1]], pt[mtints[2]],                            pt[mtints[3]]) &&           IsRectangleAnyOrder(pt[mtints[4]], pt[mtints[5]], pt[mtints[6]],                               pt[mtints[7]])) {         cout <<  YES  << endl;         cout << mtints[0] <<     << mtints[1] <<     << mtints[2] <<                  << mtints[3] << endl;         cout << mtints[4] <<     << mtints[5] <<     << mtints[6] <<                  << mtints[7] << endl;         return 0;       }     } while (next_permutation(mtints, mtints + 8));     cout <<  NO  << endl;     return 0;   }   