#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;
}
