#include<cstdio>
#include<cstring>
#include<algorithm>
#define eps 1e-8
#define _sign(x)((x)>eps?1:((x)<-eps?2:0))
using namespace std;
struct point
{
double x,y;
};
double xmult(point p1,point p2,point p0)
{
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
int inside_convex(point q,int n,point*p)
{
int i,s[3]={1,1,1};
for(i=0; i<n&&s[1]|s[2]; i++)
s[_sign(xmult(p[(i+1)%n],q,p[i]))]=0;
return s[1]|s[2];
}
int inside_convex_v2(point q,int n,point*p)
{
int i,s[3]={1,1,1};
for(i=0; i<n&&s[0]&&s[1]|s[2]; i++)
s[_sign(xmult(p[(i+1)%n],q,p[i]))]=0;
return s[0]&&s[1]|s[2];
}
int main()
{
int n;
point p[1000],P;
printf("按顺时针或逆时针方向输入多边形边数");
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
while(1)
{
scanf("%lf%lf",&P.x,&P.y);
if(inside_convex(P,n,p))
printf("在多边形内包括边上\n");
/* if(inside_convex_v2(point P,int n,point*p))
printf("在多边形内边除外\n");*/
else
printf("在外面\n");
}
return 0;
}