#include <bits/stdc++.h>
using namespace std;
const int mx = 3005;
const int N = 100005;
int n, a[mx][mx], b[mx][mx], ans[N];
pair<int, int> t[N];
inline int check(int lx, int rx, int ly, int ry) {
  int cnt = b[rx][ry];
  if (lx) cnt -= b[lx - 1][ry];
  if (ly) cnt -= b[rx][ly - 1];
  if (lx && ly) cnt += b[lx - 1][ly - 1];
  int need = (rx - lx + 1) * (ry - ly + 1);
  if (cnt != need) return -1;
  if (ly)
    if (a[rx][ly] == a[rx][ly - 1]) return -1;
  if (lx)
    if (a[lx][ry] == a[lx - 1][ry]) return -1;
  for (int i = lx; i <= rx; i++)
    if (a[i][ry] == a[i][ry + 1]) return false;
  for (int i = ly; i <= ry; i++)
    if (a[rx][i] == a[rx + 1][i]) return false;
  return true;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int q = (0); q <= ((n)-1); q++) {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    for (int i = x1; i < x2; i++)
      for (int j = y1; j < y2; j++) a[i][j] = q + 1, b[i][j] = 1;
    t[q] = make_pair(x1, y1);
  }
  for (int i = (0); i <= ((mx)-1); i++)
    for (int j = (0); j <= ((mx)-1); j++) {
      if (i - 1 >= 0) b[i][j] += b[i - 1][j];
      if (j - 1 >= 0) b[i][j] += b[i][j - 1];
      if (i - 1 >= 0 && j - 1 >= 0) b[i][j] -= b[i - 1][j - 1];
    }
  random_shuffle(t, t + n);
  for (int q = (0); q <= ((n)-1); q++) {
    int si = t[q].first, sj = t[q].second;
    int ei = si, ej = sj;
    while (ei < mx && ej < mx) {
      int ch = check(si, ei, sj, ej);
      if (ch == -1) break;
      if (ch == 1) {
        for (int i = si; i <= ei; i++)
          for (int j = sj; j <= ej; j++) ans[a[i][j]] = 1;
        vector<int> res;
        for (int i = 0; i < N; i++)
          if (ans[i]) res.push_back(i);
        printf("YES %d\n", (int)((res).end() - (res).begin()));
        for (int i = (0); i <= (((int)((res).end() - (res).begin())) - 1);
             i++) {
          if (i) printf(" ");
          printf("%d", res[i]);
        }
        puts("");
        exit(0);
      }
      ei++;
      ej++;
    }
  }
  puts("NO");
  return 0;
}
