#include <bits/stdc++.h>
using namespace std;
const int INF = (int)1e9;
const long long LINF = (long long)1e18;
long long sqr(long long a) { return a * a; }
pair<long long, long long> check(vector<pair<long long, long long> > a) {
  if (a.size() != 4) {
    return make_pair(0, 0);
  }
  vector<long long> d;
  long long sx = 0, sy = 0;
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < i; j++) {
      d.push_back(sqr(a[i].first - a[j].first) +
                  sqr(a[i].second - a[j].second));
    }
    sx += a[i].first;
    sy += a[i].second;
  }
  long long d2 = sqr(4 * a[0].first - sx) + sqr(4 * a[0].second - sy);
  for (int i = 0; i < 4; i++) {
    long long dx2 = 4 * a[i].first - sx;
    long long dy2 = 4 * a[i].second - sy;
    if (sqr(dx2) + sqr(dy2) != d2) {
      return make_pair(0, 0);
    }
  }
  sort(d.begin(), d.end());
  if (d[0] == 0) {
    return make_pair(0, 0);
  }
  if (d[0] != d[1] || d[2] != d[3] || d[4] != d[5]) {
    return make_pair(0, 0);
  }
  if (d[0] + d[2] != d[4]) {
    return make_pair(0, 0);
  }
  return make_pair(d[0], d[2]);
}
pair<long long, long long> A[8];
pair<long long, long long> getP(int msk) {
  vector<pair<long long, long long> > a;
  for (int i = 0; i < 8; i++) {
    if ((1 << i) & msk) {
      a.push_back(A[i]);
    }
  }
  return check(a);
}
int isSqr(int msk) {
  pair<long long, long long> p = getP(msk);
  return p.first != 0 && p.first == p.second;
}
int isRect(int msk) {
  pair<long long, long long> p = getP(msk);
  return p.first != 0;
}
int main() {
  for (int i = 0; i < 8; i++) {
    cin >> A[i].first >> A[i].second;
  }
  for (int msk = 0; msk < (1 << 8); msk++) {
    if (isSqr(msk) && isRect(((1 << 8) - 1) ^ msk)) {
      cout << "YES" << endl;
      for (int i = 0; i < 8; i++) {
        if ((1 << i) & msk) {
          cout << i + 1 << " ";
        }
      }
      cout << endl;
      for (int i = 0; i < 8; i++) {
        if (((1 << i) & msk) == 0) {
          cout << i + 1 << " ";
        }
      }
      cout << endl;
      return 0;
    }
  }
  cout << "NO" << endl;
  return 0;
}
