#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > pts;
vector<pair<int, int> > A, B;
vector<int> Aidx, Bidx;
int sqr(pair<int, int> a, pair<int, int> b) {
  return (a.first - b.first) * (a.first - b.first) +
         (a.second - b.second) * (a.second - b.second);
}
double sq(double a) { return a * a; }
bool rect(vector<pair<int, int> > A) {
  double x1, y1, x2, y2, x3, y3, x4, y4;
  x1 = A[0].first;
  x2 = A[1].first;
  x3 = A[2].first;
  x4 = A[3].first;
  y1 = A[0].second;
  y2 = A[1].second;
  y3 = A[2].second;
  y4 = A[3].second;
  double cx, cy;
  double dd1, dd2, dd3, dd4;
  cx = (x1 + x2 + x3 + x4) / 4;
  cy = (y1 + y2 + y3 + y4) / 4;
  dd1 = sq(cx - x1) + sq(cy - y1);
  dd2 = sq(cx - x2) + sq(cy - y2);
  dd3 = sq(cx - x3) + sq(cy - y3);
  dd4 = sq(cx - x4) + sq(cy - y4);
  return dd1 == dd2 && dd1 == dd3 && dd1 == dd4;
}
bool sq(vector<pair<int, int> > A) {
  pair<int, int> p1, p2, p3, p4;
  p1 = A[0];
  p2 = A[1];
  p3 = A[2];
  p4 = A[3];
  int d2 = sqr(p1, p2);
  int d3 = sqr(p1, p3);
  int d4 = sqr(p1, p4);
  if (d2 == d3 && 2 * d2 == d4) {
    int d = sqr(p2, p4);
    return (d == sqr(p3, p4) && d == d2);
  }
  if (d3 == d4 && 2 * d3 == d2) {
    int d = sqr(p2, p3);
    return (d == sqr(p2, p4) && d == d3);
  }
  if (d2 == d4 && 2 * d2 == d3) {
    int d = sqr(p2, p3);
    return (d == sqr(p3, p4) && d == d2);
  }
  return false;
}
int main() {
  int x, y;
  for (int i = 0; i < 8; i++) {
    cin >> x >> y;
    pts.push_back({x, y});
  }
  for (int mask = 0; mask < (1 << 8); mask++) {
    A.clear();
    B.clear();
    Aidx.clear();
    Bidx.clear();
    if (__builtin_popcount(mask) == 4) {
      for (int j = 0; j < 8; j++) {
        if ((mask & (1 << j)))
          A.push_back(pts[j]), Aidx.push_back(j + 1);
        else
          B.push_back(pts[j]), Bidx.push_back(j + 1);
      }
      if (rect(B) && sq(A)) {
        cout << "YES"
             << "\n";
        for (int i = 0; i < 4; i++) cout << Aidx[i] << " ";
        cout << "\n";
        for (int i = 0; i < 4; i++) cout << Bidx[i] << " ";
        cout << "\n";
        return 0;
      } else if (sq(B) && rect(A)) {
        cout << "YES"
             << "\n";
        for (int i = 0; i < 4; i++) cout << Bidx[i] << " ";
        cout << "\n";
        for (int i = 0; i < 4; i++) cout << Aidx[i] << " ";
        cout << "\n";
        return 0;
      }
    }
  }
  cout << "NO\n";
  return 0;
}
