#include <bits/stdc++.h>
using namespace std;
void f_swap(int &a, int &b) { a ^= b ^= a ^= b; }
struct Cube {
  int si, sj, ei, ej;
  double i, j, w;
  int r;
  void get() {
    scanf("%d%d%d%d", &si, &sj, &ei, &ej);
    if (si > ei) f_swap(si, ei);
    if (sj > ej) f_swap(sj, ej);
    i = (si + ei) * 0.5;
    j = (sj + ej) * 0.5;
    r = ei - si;
    w = r * r * r;
  }
};
Cube cub[100];
int N;
void get_data() {
  int i;
  scanf("%d", &N);
  for (i = 0; i < N; i++) {
    cub[i].get();
  }
}
bool out(double xi, double xj, int id) {
  if (xi > cub[id].ei + 1e-12 || xi + 1e-12 < cub[id].si ||
      xj > cub[id].ej + 1e-12 || xj + 1e-12 < cub[id].sj)
    return 1;
  return 0;
}
int f_min(int x, int y) { return x < y ? x : y; }
void run() {
  if (N == 1) {
    printf("1\n");
    return;
  }
  int i, lim = N, j;
  double ci, cj, w, di, dj, rate;
  for (i = 0; i < lim; i++) {
    ci = cj = 0;
    w = 0;
    for (j = i + 1; j < lim; j++) {
      di = cub[j].i - ci;
      dj = cub[j].j - cj;
      ci += di * cub[j].w / (cub[j].w + w);
      cj += dj * cub[j].w / (cub[j].w + w);
      w += cub[j].w;
      if (out(ci, cj, i)) break;
    }
    lim = j;
  }
  printf("%d\n", lim);
}
int main() {
  get_data();
  run();
  return 0;
}
