#include <bits/stdc++.h>
using namespace std;
struct carpet {
int x;
int y;
int x1; // 表示所在点x的最大值
int y1; // 表示所在点y的最大值
carpet(int x, int y, int x1, int y1) : x(x), y(y), x1(x + x1), y1(y + y1) {} // 定义构造函数
carpet() {}
};
int main() {
int n; // 个数
cin >> n; // 读取地毯数量
carpet c[n];
for (int i = 0; i < n; i++) {
cin >> c[i].x >> c[i].y >> c[i].x1 >> c[i].y1; // 地毯覆盖的信息
}
int a, b;
cin >> a >> b; // 所要求点的位置
// 从下到上遍历地毯,找到覆盖的地毯
for (int i = n - 1; i >= 0; i--) {
// 检查点 (a, b) 是否在当前地毯内
if ((a >= c[i].x && a <= c[i].x1) && (b >= c[i].y && b <= c[i].y1)) {
cout << i + 1; // 输出第 i + 1 个地毯
return 0; // 找到后直接返回
}
}
cout << -1; // 如果没有找到,输出 -1
return 0;
}