#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;
const int MAXA = 3000;
const int CNTA = MAXA + 10;
int N, U[MAXN], D[MAXN], L[MAXN], R[MAXN];
int bel[CNTA][CNTA], cnt[CNTA][CNTA];
int dBorder[CNTA][CNTA], rBorder[CNTA][CNTA];
void terminateWithYes(int x, int y, int l) {
  vector<int> ret;
  ret.clear();
  int dx, dy;
  for (dx = 1; dx <= l; dx++)
    for (dy = 1; dy <= l; dy++)
      if (bel[x + dx][y + dy]) ret.push_back(bel[x + dx][y + dy]);
  printf("YES %d\n", ret.size());
  int i;
  for (i = 0; i <= ret.size() - 1; i++)
    printf("%d%s", ret[i], (i == ret.size() - 1) ? "\n" : " ");
  exit(0);
}
int main() {
  scanf("%d", &N);
  int i, j, x, y;
  for (i = 0; i <= MAXA; i++)
    for (j = 0; j <= MAXA; j++)
      bel[i][j] = cnt[i][j] = rBorder[i][j] = dBorder[i][j] = 0;
  for (i = 1; i <= N; i++) {
    scanf("%d%d%d%d", &U[i], &L[i], &D[i], &R[i]);
    for (x = U[i] + 1; x <= D[i]; x++)
      for (y = L[i] + 1; y <= R[i]; y++) cnt[x][y]++;
    bel[U[i] + 1][L[i] + 1] = i;
    for (x = U[i] + 1; x <= D[i]; x++) rBorder[x][L[i]] = rBorder[x][R[i]] = 1;
    for (y = L[i] + 1; y <= R[i]; y++) dBorder[U[i]][y] = dBorder[D[i]][y] = 1;
  }
  for (i = 1; i <= MAXA; i++)
    for (j = 1; j <= MAXA; j++)
      cnt[i][j] += cnt[i - 1][j] + cnt[i][j - 1] - cnt[i - 1][j - 1];
  for (i = 0; i <= MAXA; i++)
    for (j = 1; j <= MAXA; j++) dBorder[i][j] += dBorder[i][j - 1];
  for (i = 1; i <= MAXA; i++)
    for (j = 0; j <= MAXA; j++) rBorder[i][j] += rBorder[i - 1][j];
  for (i = 1; i <= N; i++) {
    int maxa = MAXA - max(U[i], L[i]), a;
    for (a = 1; a <= maxa; a++)
      if (((cnt[U[i] + a][L[i] + a] - cnt[U[i] + a][L[i]] -
            cnt[U[i]][L[i] + a] + cnt[U[i]][L[i]]) != a * a) ||
          (rBorder[U[i]][L[i]] + a != rBorder[U[i] + a][L[i]]) ||
          (dBorder[U[i]][L[i]] + a != dBorder[U[i]][L[i] + a]))
        break;
      else if ((rBorder[U[i]][L[i] + a] + a == rBorder[U[i] + a][L[i] + a]) &&
               (dBorder[U[i] + a][L[i]] + a == dBorder[U[i] + a][L[i] + a]))
        terminateWithYes(U[i], L[i], a);
  }
  printf("NO\n");
}
