#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;
}