#include <bits/stdc++.h>
using namespace std;
bool isRectangle(double x1, double y1, double x2, double y2, double x3,
                 double y3, double x4, double y4) {
  double cx, cy;
  double dd1, dd2, dd3, dd4;
  cx = (x1 + x2 + x3 + x4) / 4;
  cy = (y1 + y2 + y3 + y4) / 4;
  dd1 = (cx - x1) * (cx - x1) + (cy - y1) * (cy - y1);
  dd2 = (cx - x2) * (cx - x2) + (cy - y2) * (cy - y2);
  dd3 = (cx - x3) * (cx - x3) + (cy - y3) * (cy - y3);
  dd4 = (cx - x4) * (cx - x4) + (cy - y4) * (cy - y4);
  return abs(dd1 - dd2) <= 1e-9 && abs(dd1 - dd3) <= 1e-9 &&
         abs(dd1 - dd4) <= 1e-9;
}
bool isSquare(double x1, double y1, double x2, double y2, double x3, double y3,
              double x4, double y4) {
  if (!isRectangle(x1, y1, x2, y2, x3, y3, x4, y4)) return false;
  double dd1, dd2;
  dd1 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
  dd2 = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);
  if (fabs(dd1 - dd2) <= 1e-9) return true;
  dd1 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
  dd2 = (x1 - x4) * (x1 - x4) + (y1 - y4) * (y1 - y4);
  if (fabs(dd1 - dd2) <= 1e-9) return true;
  dd1 = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);
  dd2 = (x1 - x4) * (x1 - x4) + (y1 - y4) * (y1 - y4);
  if (fabs(dd1 - dd2) <= 1e-9) return true;
  return false;
}
int main(int argc, const char *argv[]) {
  vector<pair<int, int> > v(8);
  for (int i = 0; i < 8; i++) {
    int x, y;
    cin >> x >> y;
    v[i] = make_pair(x, y);
  }
  int k = 1;
  for (; k < 256; k++) {
    int c = 0;
    for (int i = 0; i < 8; i++) {
      if ((k & (1 << i)) == 0) c++;
    }
    if (c != 4) continue;
    vector<pair<int, int> > v1(4), v2(4);
    vector<int> r1(4), r2(4);
    int i1 = 0, i2 = 0;
    for (int i = 0; i < 8; i++) {
      if ((k & (1 << i)) == 0) {
        r1[i1] = i + 1;
        v1[i1] = v[i];
        ++i1;
      } else {
        r2[i2] = i + 1;
        v2[i2] = v[i];
        ++i2;
      }
    }
    if (isRectangle(v1[0].first, v1[0].second, v1[1].first, v1[1].second,
                    v1[2].first, v1[2].second, v1[3].first, v1[3].second) &&
        isSquare(v2[0].first, v2[0].second, v2[1].first, v2[1].second,
                 v2[2].first, v2[2].second, v2[3].first, v2[3].second)) {
      cout << "YES" << endl;
      for (int i = 0; i < 4; i++) {
        cout << r2[i] << " ";
      }
      cout << endl;
      for (int i = 0; i < 4; i++) {
        cout << r1[i] << " ";
      }
      cout << endl;
      return 0;
    }
  }
  cout << "NO" << endl;
  return 0;
}
