#include <bits/stdc++.h>
using namespace std;
typedef struct node {
  double x1, y1, x2, y2;
} node;
node a[161];
int N;
bool isok(int ed) {
  double w = 0;
  double xw = 0;
  double yw = 0;
  for (int i = ed; i > 0; i--) {
    double tw =
        ((a[i].x2 - a[i].x1) * (a[i].x2 - a[i].x1) * (a[i].x2 - a[i].x1));
    w += tw;
    xw += (a[i].x1 + a[i].x2) / 2 * tw;
    yw += (a[i].y1 + a[i].y2) / 2 * tw;
    double nx = xw / w;
    double ny = yw / w;
    if (!(a[i - 1].x1 <= nx && nx <= a[i - 1].x2 && a[i - 1].y1 <= ny &&
          ny <= a[i - 1].y2))
      return false;
  }
  return true;
}
int main() {
  scanf("%d", &N);
  for (int i = (0); i < (N); i++)
    scanf("%lf%lf%lf%lf", &a[i].x1, &a[i].y1, &a[i].x2, &a[i].y2);
  for (int i = (0); i < (N); i++) {
    if (a[i].x1 > a[i].x2) swap(a[i].x1, a[i].x2);
    if (a[i].y1 > a[i].y2) swap(a[i].y1, a[i].y2);
  }
  int ret = N;
  for (int i = (1); i < (N); i++) {
    if (!isok(i)) {
      ret = i;
      break;
    }
  }
  printf("%d\n", ret);
  return 0;
}
