#include <bits/stdc++.h>
using namespace std;
int temp, i, j, k, T;
long long pow_r(long long d, long long n) {
  long long x = 1ll;
  while (n > 0) {
    if (n & 1) x = (x * d);
    d = (d * d);
    n >>= 1;
  }
  return x;
}
int n, da[6], db[6];
pair<int, pair<int, int> > a[8];
int dist(int p, int q) {
  return (a[p].second.first - a[q].second.first) *
             (a[p].second.first - a[q].second.first) +
         (a[p].second.second - a[q].second.second) *
             (a[p].second.second - a[q].second.second);
}
void check() {
  da[0] = dist(0, 1);
  da[1] = dist(1, 2);
  da[2] = dist(2, 3);
  da[3] = dist(3, 0);
  da[4] = dist(0, 2);
  da[5] = dist(1, 3);
  db[0] = dist(4, 5);
  db[1] = dist(5, 6);
  db[2] = dist(6, 7);
  db[3] = dist(7, 4);
  db[4] = dist(4, 6);
  db[5] = dist(5, 7);
  if (da[0] == da[1] && da[1] == da[2] && da[2] == da[3] && da[4] == da[5] &&
      db[0] == db[2] && db[1] == db[3] && db[4] == db[5]) {
    puts("YES");
    cout << a[0].first << " " << a[1].first << " " << a[2].first << " "
         << a[3].first << endl;
    cout << a[4].first << " " << a[5].first << " " << a[6].first << " "
         << a[7].first << endl;
    exit(0);
  }
}
int main() {
  n = 8;
  i = 0;
  while (n--) {
    scanf("%d", &a[i].second.first);
    scanf("%d", &a[i].second.second);
    a[i].first = i + 1;
    ++i;
  }
  n = 8;
  sort(a, a + 8);
  do {
    check();
  } while (next_permutation(a, a + 8));
  puts("NO");
  return 0;
}
