#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long INFLL = 0x3f3f3f3f3f3f3f3fLL;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const int maxn = 1e5 + 10;
struct node {
  int x, y, id;
  bool operator<(const node& rhs) const {
    if (x == rhs.x) return y < rhs.y;
    return x < rhs.x;
  }
} t[8], p[8], q[8];
int dis(node A, node B) {
  return (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);
}
bool check2() {
  int a[4];
  for (int i = 0; i < 4; i++) a[i] = i;
  do {
    if (dis(q[a[0]], q[a[1]]) == dis(q[a[2]], q[a[3]]) &&
        dis(q[a[1]], q[a[2]]) == dis(q[a[3]], q[a[0]]) &&
        dis(q[a[0]], q[a[1]]) + dis(q[a[1]], q[a[2]]) ==
            dis(q[a[0]], q[a[2]])) {
      return true;
    }
  } while (next_permutation(a, a + 4));
  return false;
}
bool check() {
  int a[4];
  for (int i = 0; i < 4; i++) a[i] = i;
  do {
    if (dis(p[a[0]], p[a[1]]) == dis(p[a[2]], p[a[3]]) &&
        dis(p[a[1]], p[a[2]]) == dis(p[a[3]], p[a[0]]) &&
        dis(p[a[0]], p[a[1]]) == dis(p[a[1]], p[a[2]]) &&
        dis(p[a[0]], p[a[1]]) + dis(p[a[1]], p[a[2]]) ==
            dis(p[a[0]], p[a[2]])) {
      if (check2()) return true;
    }
  } while (next_permutation(a, a + 4));
  return false;
}
int main() {
  for (int i = 0; i < 8; i++) scanf("%d%d", &t[i].x, &t[i].y), t[i].id = i + 1;
  bool flag = 0;
  for (int st = 0; st < (1 << 8); st++) {
    int c1 = 0, c2 = 0;
    for (int j = 7; j >= 0; j--) {
      if ((st >> j) & 1)
        p[c1++] = t[7 - j];
      else
        q[c2++] = t[7 - j];
    }
    if (c1 != 4) continue;
    if (check()) {
      flag = 1;
      break;
    }
  }
  if (!flag)
    puts("NO");
  else {
    puts("YES");
    for (int i = 0; i < 4; i++) printf("%d ", p[i].id);
    puts("");
    for (int i = 0; i < 4; i++) printf("%d ", q[i].id);
    puts("");
  }
  return 0;
}
