#include <bits/stdc++.h>
int x[9];
int y[9];
int met[9] = {0};
int v[9];
bool next_comb(std::vector<int>& comb) {
  for (int i = 3; i >= 0; --i) {
    if (comb[i] < 5 + i) {
      comb[i]++;
      for (int j = i + 1; j < 4; ++j) comb[j] = comb[j - 1] + 1;
      return true;
    }
  }
  return false;
}
int check_comb(int pref) {
  int res = 0;
  int x1 = x[v[1 + pref]], y1 = y[v[1 + pref]];
  int x2 = x[v[2 + pref]], y2 = y[v[2 + pref]];
  int x3 = x[v[3 + pref]], y3 = y[v[3 + pref]];
  int x4 = x[v[4 + pref]], y4 = y[v[4 + pref]];
  int d12 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
  int d13 = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);
  int d14 = (x1 - x4) * (x1 - x4) + (y1 - y4) * (y1 - y4);
  int d23 = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);
  int d24 = (x2 - x4) * (x2 - x4) + (y2 - y4) * (y2 - y4);
  int d34 = (x3 - x4) * (x3 - x4) + (y3 - y4) * (y3 - y4);
  if (d12 == d34 && d13 == d24 && d14 == d23) res = 1;
  if (res == 0) return 0;
  if (d13 == d12) res = 2;
  return res;
}
void rec(int dep) {
  if (dep == 9) {
    int c1 = check_comb(0);
    int c2 = check_comb(4);
    if (c1 > 0 && c2 > 0 && (c1 == 2 || c2 == 2)) {
      std::cout << "YES\n";
      if (c1 == 2)
        std::cout << v[1] << " " << v[2] << " " << v[3] << " " << v[4] << "\n"
                  << v[5] << " " << v[6] << " " << v[7] << " " << v[8]
                  << std::endl;
      else
        std::cout << v[5] << " " << v[6] << " " << v[7] << " " << v[8] << "\n"
                  << v[1] << " " << v[2] << " " << v[3] << " " << v[4]
                  << std::endl;
      exit(0);
    }
    return;
  }
  for (int i = 1; i <= 8; ++i)
    if (met[i] == 0) {
      met[i] = 1;
      v[dep] = i;
      rec(dep + 1);
      met[i] = 0;
    }
}
int main() {
  for (int i = 1; i <= 8; ++i) {
    std::cin >> x[i] >> y[i];
  }
  rec(1);
  std::cout << "NO";
  return 0;
}
