#define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; #include using namespace std; const double EPS=1e-9; const int MAX=310; const int INF=1e9+7; double dis[MAX][MAX]; int n,m; void floyd(){ rep(k,2*n){ rep(i,2*n){ if(dis[i][k]>INF-EPS) continue; rep(j,2*n){ if(dis[k][j]>INF-EPS) continue; dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); } } } } int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); cin>>n>>m; rep(i,2*n){ rep(j,2*n){ if(i==j) dis[i][j]=0; else dis[i][j]=INF; } } vector X(2*n),Y(2*n); rep(i,2*n) cin>>X[i]>>Y[i]; vector A(m),B(m),C(m),D(m); rep(i,m){ cin>>A[i]>>B[i]>>C[i]>>D[i]; A[i]--,B[i]--,C[i]--,D[i]--; } auto cross=[&](int a,int b,int c)->double{ return (X[b]-X[a])*(Y[c]-Y[a])-(Y[b]-Y[a])*(X[c]-X[a]); }; auto f=[&](int a,int b,int c,int d)->bool{ if(cross(a,b,c)*cross(a,b,d)<0 && cross(c,d,a)*cross(c,d,b)<0) return false; return true; }; auto g=[&](int i,int j)->double{ return sqrt((X[i]-X[j])*(X[i]-X[j])+(Y[i]-Y[j])*(Y[i]-Y[j])); }; rep(i,2*n){ for(int j=i+1;j<2*n;j++){ bool e=true; for(int k=0;k