#include <bits/stdc++.h>
using namespace std;
int a[3005][3005], s[3005][3005];
int r[3005][3005], d[3005][3005];
vector<int> v, X, Y;
int n;
int main() {
  scanf("%d", &n);
  for (int i = 1, x1, y1, x2, y2; i <= n; i++) {
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    X.push_back(x1), Y.push_back(y1);
    for (int x = x1 + 1; x <= x2; x++)
      for (int y = y1 + 1; y <= y2; y++) a[x][y] = i;
  }
  for (int i = 1; i <= 3000; i++)
    for (int j = 1; j <= 3000; j++)
      s[i][j] = !a[i][j] + s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
  for (int i = 3000; i >= 0; i--)
    for (int j = 3000; j >= 0; j--)
      r[i][j] = a[i][j + 1] == a[i + 1][j + 1] ? 0 : r[i][j + 1] + 1,
      d[i][j] = a[i + 1][j] == a[i + 1][j + 1] ? 0 : d[i + 1][j] + 1;
  sort(X.begin(), X.end());
  X.resize(unique(X.begin(), X.end()) - X.begin());
  sort(Y.begin(), Y.end());
  Y.resize(unique(Y.begin(), Y.end()) - Y.begin());
  for (int i = 0; i < X.size(); i++)
    for (int j = 0; j < Y.size(); j++)
      for (int k = 1, p = X[i], q = Y[j]; k <= r[p][q] && k <= d[p][q]; k++) {
        if (s[p + k][q + k] - s[p + k][q] - s[p][q + k] + s[p][q]) break;
        if (r[p + k][q] >= k && d[p][q + k] >= k) {
          for (int x = p + 1; x <= p + k; x++)
            for (int y = q + 1; y <= q + k; y++) v.push_back(a[x][y]);
          sort(v.begin(), v.end());
          v.resize(unique(v.begin(), v.end()) - v.begin());
          printf("YES %d\n", v.size());
          for (int p = 0; p < v.size(); p++) printf("%d ", v[p]);
          puts("");
          return 0;
        }
      }
  puts("NO");
}
