#include <bits/stdc++.h>
using namespace std;
struct Tpoint {
  int x, y;
  Tpoint() {}
  Tpoint(int a, int b) : x(a), y(b) {}
  bool operator<(const Tpoint& a) const {
    if (x != a.x) return x < a.x;
    return y < a.y;
  }
};
int area2(Tpoint a, Tpoint b, Tpoint c) {
  return ((b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y));
}
int dotdet(Tpoint a, Tpoint b, Tpoint c) {
  return ((a.x - b.x) * (c.x - b.x) + (a.y - b.y) * (c.y - b.y));
}
int cdis(const Tpoint& a, const Tpoint& b) {
  return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}
bool isrec(Tpoint a[4]) {
  if (area2(a[0], a[1], a[2]) == 0 || area2(a[0], a[2], a[3]) == 0 ||
      area2(a[1], a[2], a[3]) == 0 || area2(a[0], a[1], a[3]) == 0)
    return false;
  if (dotdet(a[1], a[0], a[2]) == 0 && dotdet(a[0], a[1], a[3]) == 0 &&
      cdis(a[0], a[1]) == cdis(a[2], a[3]))
    return true;
  return false;
}
bool issqu(Tpoint a[4]) {
  if (isrec(a) && cdis(a[0], a[1]) == cdis(a[0], a[2])) return true;
  return false;
}
Tpoint points[10];
Tpoint ta[10];
Tpoint ta2[10];
int tta;
bool haveans = false;
int ans[5];
int ans2[5], la;
int main() {
  for (int i = 0; i < 8; ++i) scanf("%d%d", &points[i].x, &points[i].y);
  for (int i = 0; i < 8 && !haveans; ++i)
    for (int j = i + 1; j < 8 && !haveans; ++j)
      for (int k = j + 1; k < 8 && !haveans; ++k)
        for (int m = k + 1; m < 8 && !haveans; ++m) {
          ta[0] = points[i];
          ta[1] = points[j];
          ta[2] = points[k];
          ta[3] = points[m];
          sort(ta, ta + 4);
          tta = 0;
          for (int l = 0; l < 8; ++l)
            if (l != i && l != j && l != k && l != m) ta2[tta++] = points[l];
          sort(ta2, ta2 + 4);
          if (issqu(ta) && isrec(ta2)) {
            haveans = true;
            ans[0] = i + 1;
            ans[1] = j + 1;
            ans[2] = k + 1;
            ans[3] = m + 1;
            la = 0;
            for (int l = 0; l < 8; ++l)
              if (l != i && l != j && l != k && l != m) ans2[la++] = l + 1;
            break;
          }
        }
  if (!haveans)
    puts("NO");
  else {
    puts("YES");
    printf("%d %d %d %d\n", ans[0], ans[1], ans[2], ans[3]);
    printf("%d %d %d %d\n", ans2[0], ans2[1], ans2[2], ans2[3]);
  }
  return 0;
}
