#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
const double EPS = 1e-6;
const int INF = 0x3fffffff;
const long long LINF = INF * 1ll * INF;
const double PI = acos(-1.0);
using namespace std;
int g[3005][3005];
pair<int, int> p[100005];
int l[3005][3005], u[3005][3005], d[3005][3005], r[3005][3005];
int area[3005][3005];
vector<pair<int, int> > va[6005], vb[6005];
int main(void) {
  int n;
  scanf("%d", &n);
  memset(g, -1, sizeof(g));
  for (int i = 0; i < n; i++) {
    int x1, y1, x2, y2;
    scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
    for (int k = y1 + 1; k <= y2; k++)
      for (int p = x1 + 1; p <= x2; p++) g[k][p] = i;
    p[i] = make_pair(y1 + 1, x1 + 1);
    va[y1 - x1 + 3001].push_back(make_pair(y1 + 1, x1 + 1));
    vb[y2 - x2 + 3001].push_back(make_pair(y2, x2));
  }
  for (int i = 0; i <= 3001; i++) area[0][i] = 0;
  for (int i = 1; i <= 3001; i++) {
    area[i][0] = 0;
    for (int j = 1; j <= 3001; j++) {
      area[i][j] = area[i - 1][j] + area[i][j - 1] - area[i - 1][j - 1];
      area[i][j] += (g[i][j] == -1 ? 0 : 1);
    }
  }
  for (int i = 1; i <= 3001; i++) {
    int last = 3001;
    for (int j = 3001; j >= 1; j--) {
      if (g[i][j] == g[i - 1][j]) {
        last = j - 1;
        r[i][j] = -1;
      } else
        r[i][j] = last - j + 1;
    }
  }
  for (int i = 1; i <= 3001; i++) {
    int last = 1;
    for (int j = 1; j <= 3001; j++) {
      if (g[i][j] == g[i + 1][j]) {
        last = j + 1;
        l[i][j] = -1;
      } else
        l[i][j] = j - last + 1;
    }
  }
  for (int j = 1; j <= 3001; j++) {
    int last = 3001;
    for (int i = 3001; i >= 1; i--) {
      if (g[i][j] == g[i][j - 1]) {
        last = i - 1;
        u[i][j] = -1;
      } else
        u[i][j] = last - i + 1;
    }
  }
  for (int j = 1; j <= 3001; j++) {
    int last = 1;
    for (int i = 1; i <= 3001; i++) {
      if (g[i][j] == g[i][j + 1]) {
        last = i + 1;
        d[i][j] = -1;
      } else
        d[i][j] = i - last + 1;
    }
  }
  for (int i = 0; i < 6005; i++) sort(vb[i].begin(), vb[i].end());
  for (int i = 0; i < n; i++) {
    int x = p[i].first, y = p[i].second;
    int sz = vb[x - y + 3001].size();
    for (int j = 0; j < sz; j++) {
      int yy = vb[x - y + 3001][j].second;
      int len = yy - y + 1;
      if (len <= 0) continue;
      if (u[x][y] >= len && r[x][y] >= len) {
        if (d[x + len - 1][y + len - 1] >= len &&
            l[x + len - 1][y + len - 1] >= len) {
          if (area[x + len - 1][y + len - 1] - area[x + len - 1][y - 1] -
                  area[x - 1][y + len - 1] + area[x - 1][y - 1] ==
              len * len) {
            set<int> ans;
            printf("YES ");
            for (int a = x; a <= x + len - 1; a++)
              for (int b = y; b <= y + len - 1; b++) {
                ans.insert(g[a][b]);
              }
            cout << ans.size() << endl;
            for (set<int>::iterator it = ans.begin(); it != ans.end(); it++) {
              cout << (*it) + 1 << " ";
            }
            cout << endl;
            return 0;
          }
        }
      } else
        break;
    }
  }
  puts("NO");
}
