#include <iostream>
using namespace std;
//数组只存储左下和右上两个点的坐标
int t[10010][4];
int main() {
int T;
cin >> T;
//存储地毯,编号为从0至T-1,事实上这里用int i=1;i<=T;i++更好
for (int i = 0; i < T; i++) {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
t[i][0] = a, t[i][1] = b;
t[i][2] = a + c, t[i][3] = b + d;
}
int x, y, ans = 0;
scanf("%d %d", &x, &y);
//这一步还可以更快 上面的地毯都是后放进去的
//因此从后往前扫 if里放break可以大大减少for的次数
for (int i = 0; i <= T; i++) {
//"涂色"
if (x >= t[i][0] && x <= t[i][2] && y >= t[i][1] && y <= t[i][3])
ans = i;
}
//由于输入时地毯编号从0开始,这里需要++
ans++;
if (ans != 0)
printf("%d", ans);
else
printf("-1");
return 0;
}