func_code_string: #include <bits/stdc++.h>   using namespace std;   int temp, i, j, k, T;   long long pow_r(long long d, long long n) {     long long x = 1ll;     while (n > 0) {       if (n & 1) x = (x * d);       d = (d * d);       n >>= 1;     }     return x;   }   int n, da[6], db[6];   pair<int, pair<int, int> > a[8];   int dist(int p, int q) {     return (a[p].second.first - a[q].second.first) *                (a[p].second.first - a[q].second.first) +            (a[p].second.second - a[q].second.second) *                (a[p].second.second - a[q].second.second);   }   void check() {     da[0] = dist(0, 1);     da[1] = dist(1, 2);     da[2] = dist(2, 3);     da[3] = dist(3, 0);     da[4] = dist(0, 2);     da[5] = dist(1, 3);     db[0] = dist(4, 5);     db[1] = dist(5, 6);     db[2] = dist(6, 7);     db[3] = dist(7, 4);     db[4] = dist(4, 6);     db[5] = dist(5, 7);     if (da[0] == da[1] && da[1] == da[2] && da[2] == da[3] && da[4] == da[5] &&         db[0] == db[2] && db[1] == db[3] && db[4] == db[5]) {       puts( YES );       cout << a[0].first <<     << a[1].first <<     << a[2].first <<                << a[3].first << endl;       cout << a[4].first <<     << a[5].first <<     << a[6].first <<                << a[7].first << endl;       exit(0);     }   }   int main() {     n = 8;     i = 0;     while (n--) {       scanf( %d , &a[i].second.first);       scanf( %d , &a[i].second.second);       a[i].first = i + 1;       ++i;     }     n = 8;     sort(a, a + 8);     do {       check();     } while (next_permutation(a, a + 8));     puts( NO );     return 0;   }   