


#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define eps 1e-8
using namespace std;
//抄博友好程序 计算几何 内积 背
struct point
{
double x;
double y;
};
point a[40];
point b[40];
int T;
int sgn(double x) {
if (abs(x) < eps) return 0;
if (x > 0) return 1;
return -1;
}
int check(point a, point b, point c, point d)//1相交
{
if(min(a.x,b.x)>max(c.x,d.x)||min(c.x,d.x)>max(a.x,b.x))
{
return 0;
}
if(min(a.y,b.y)>max(c.y,d.y)||min(c.y,d.y)>max(a.y,b.y))
{
return 0;
}
double nj1=(b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);//ab与ac的内积
double nj2=(b.x-a.x)*(d.y-a.y)-(b.y-a.y)*(d.x-a.x);//ab与ad的内积
double nj3=(d.x-c.x)*(a.y-c.y)-(d.y-c.y)*(a.x-c.x);//cd与ca的内积 背
double nj4=(d.x-c.x)*(b.y-c.y)-(d.y-c.y)*(b.x-c.x);//cd与cb的内积 背
return sgn(nj1)*sgn(nj2)<0&&sgn(nj3)*sgn(nj4)<0;//抄博友程序 背 // <= <= wa
}
/*
bool check(point a, point b, point c, point d)//wa 两个程序的check逻辑结构不一样
{
if( min(a.x, b.x) > max(c.x, d.x) ||
min(a.y, b.y) > max(c.y, d.y) ||
min(c.x, d.x) > max(a.x, b.x) ||
min(c.y, d.y) > max(a.y, b.y) )
return 0;
double h, i, j, k;
h = (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
i = (b.x - a.x) * (d.y - a.y) - (b.y - a.y) * (d.x - a.x);
j = (d.x - c.x) * (a.y - c.y) - (d.y - c.y) * (a.x - c.x);
k = (d.x - c.x) * (b.y - c.y) - (d.y - c.y) * (b.x - c.x);
return h * i <= eps && j * k <= eps;//
}*/
int work(point A, point B)
{
int js=1;
for(int i=0;i<T;i++)
{
if(check(A,B,a[i],b[i]))
{
js++;
}
}
return js;
}
int main()
{
while(1)
{
cin>>T;
if(cin.eof()==1)
{
break;
}
//memset(a,0,sizeof(a));
//memset(b,0,sizeof(b));
for(int i=0;i<T;i++)
{
cin>>a[i].x>>a[i].y>>b[i].x>>b[i].y;
}
point p;
cin>>p.x>>p.y;
int jg=1000000;
for(int i=0;i<=100;i++)
{
//int js=1;
point tp;
tp.x=i;
tp.y=0;
jg=min(jg,work(tp,p));
tp.x=0;
tp.y=i;
jg=min(jg,work(tp,p));
tp.x=100;
tp.y=i;
jg=min(jg,work(tp,p));
tp.x=i;
tp.y=100;
jg=min(jg,work(tp,p));
/*
for(int j=0;j<T;j++)
{
if(check(tp,p,a[j],b[j]))
{
js++;
}
}
//if(jg>js)
//{
// cout<<tp.x<<" "<<tp.y<<endl;
// cout<<js<<endl;
//}
jg=min(jg,js);*/
}
/*
for(int i=0;i<=100;i++)
{
int js=1;
point tp;
tp.x=0;
tp.y=i;
for(int j=0;j<T;j++)
{
if(check(tp,p,a[j],b[j]))
{
js++;
}
}
//if(jg>js)
//{
// cout<<tp.x<<" "<<tp.y<<endl;
// cout<<js<<endl;
//}
jg=min(jg,js);
}
for(int i=0;i<=100;i++)
{
int js=1;
point tp;
tp.x=100;
tp.y=i;
for(int j=0;j<T;j++)
{
if(check(tp,p,a[j],b[j]))
{
js++;
}
}
//if(jg>js)
//{
// cout<<tp.x<<" "<<tp.y<<endl;
// cout<<js<<endl;
//}
jg=min(jg,js);
}
for(int i=0;i<=100;i++)
{
int js=1;
point tp;
tp.x=i;
tp.y=100;
for(int j=0;j<T;j++)
{
if(check(tp,p,a[j],b[j]))
{
js++;
}
}
//if(jg>js)
//{
// cout<<tp.x<<" "<<tp.y<<endl;
// cout<<js<<endl;
//}
jg=min(jg,js);
}*/
cout<<"Number of doors = "<<jg<<endl;
}
return 0;
}