#include <bits/stdc++.h>
using namespace std;
int s[3005][3005], r[3005][3005], c[3005][3005];
struct note {
  int x1, y1, x2, y2;
} a[300005];
int n;
int ans[300005];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    x1++;
    y1++;
    a[i].x1 = x1;
    a[i].x2 = x2;
    a[i].y1 = y1;
    a[i].y2 = y2;
    for (int j = x1; j <= x2; j++)
      for (int k = y1; k <= y2; k++) s[j][k] = 1;
    for (int j = x1; j <= x2; j++) r[j][y1] = 1, r[j][y2 + 1] = 1;
    for (int j = y1; j <= y2; j++) c[x1][j] = 1, c[x2 + 1][j] = 1;
  }
  for (int i = 1; i <= 3001; i++)
    for (int j = 1; j <= 3001; j++) {
      s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
      r[i][j] += r[i - 1][j];
      c[i][j] += c[i][j - 1];
    }
  for (int i = 1; i <= n; i++) {
    int x1 = a[i].x1, y1 = a[i].y1, len = min(3000 - x1 + 1, 3000 - y1 + 1);
    for (int j = 1; j <= len; j++) {
      int x2 = x1 + j - 1, y2 = y1 + j - 1;
      if (s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1] !=
          j * j)
        break;
      if (r[x2][y1] - r[x1 - 1][y1] != j) break;
      if (r[x2][y2 + 1] - r[x1 - 1][y2 + 1] != j) continue;
      if (c[x1][y2] - c[x1][y1 - 1] != j) break;
      if (c[x2 + 1][y2] - c[x2 + 1][y1 - 1] != j) continue;
      for (int k = 1; k <= n; k++) {
        if (a[k].x1 >= x1 && a[k].x2 <= x2 && a[k].y1 >= y1 && a[k].y2 <= y2) {
          ans[++ans[0]] = k;
        }
      }
      printf("YES %d\n", ans[0]);
      for (int k = 1; k <= ans[0]; k++) printf("%d ", ans[k]);
      return 0;
    }
  }
  puts("NO");
  return 0;
}
