#include <bits/stdc++.h>
using namespace std;
pair<int, int> v[8];
pair<int, int> vv[4], vq[4];
bool is_rect(pair<int, int> a, pair<int, int> b, pair<int, int> c,
             pair<int, int> d) {
  return (b.second - a.second == c.second - d.second &&
          b.first - a.first == c.first - d.first &&
          c.second - b.second == d.second - a.second &&
          b.first - c.first == a.first - d.first) &&
         (c.second - d.second) * (d.second - a.second) ==
             -(c.first - d.first) * (d.first - a.first);
}
bool is_sq(pair<int, int> a, pair<int, int> b, pair<int, int> c,
           pair<int, int> d) {
  return (is_rect(a, b, c, d) && c.first - d.first == d.second - a.second &&
          c.second - d.second == a.first - d.first);
}
void foo() {
  cout << is_rect(make_pair(-1000, -736), make_pair(188, -1000),
                  make_pair(804, -120), make_pair(-736, -208))
       << "\n";
}
int main() {
  int nn;
  int pp[8];
  for (int i = (0); i <= (8 - 1); i++) {
    cin >> v[i].first >> v[i].second;
    pp[i] = i;
  }
  do {
    if (is_sq(v[pp[0]], v[pp[1]], v[pp[2]], v[pp[3]]) &&
        is_rect(v[pp[4]], v[pp[5]], v[pp[6]], v[pp[7]])) {
      printf("YES\n%d %d %d %d\n%d %d %d %d\n", pp[0] + 1, pp[1] + 1, pp[2] + 1,
             pp[3] + 1, pp[4] + 1, pp[5] + 1, pp[6] + 1, pp[7] + 1);
      return 0;
    }
  } while (next_permutation(pp, pp + 8));
  printf("NO\n");
  return 0;
}
