#include <cstdio>
#include <algorithm>
#include <vector>
#define nmax 810
#define pb push_back
#define f first
#define s second
#define mp make_pair
using namespace std;
struct point {int x, y;};
vector <pair <point, point> > seg;
vector <pair <int, int> > D [nmax], BEG;
point ins [nmax], P1 , P2 ;
int n, m;
//Beg - cbin1, D - cbin2;
inline bool cmp (const point &a, const point &b) {
return a.x == b.x ? (a.y < b.y) : (a.x < b.x);
}
void preproc ()
{
int nrbenzi, i, mijx, mijy, beg;
beg = 0;
point bx1, bx2;
// |
BEG.pb (mp (0, seg [0].f.x));
for (nrbenzi = 1; nrbenzi < n; nrbenzi++)
{
// |extract* * * * coordx|
bx1 = seg [nrbenzi - 1].f;
bx2 = seg [nrbenzi].f;
printf ("%d %d %d %d\n", bx1.x, bx1.y, bx2.x, bx2.y);
for (i = beg; i < n; i++) {
//if (seg [i].f.x > bx2.x) break;// | |
if (seg [i].f.x <= bx2.x) { // | - |
if (seg [i].s.x <= bx2.x) { // | -|
if (seg [i].f.x < bx1.x) {//-|- |
mijx = seg [i].s.x + bx1.x >> 1;
mijy = seg [i].s.y + bx1.y >> 1;
D [nrbenzi].pb (mp (mijx, mijy));
} else { // |-|
mijx = seg [i].s.x + seg [i].f.x >> 1;
mijy = seg [i].s.y + seg [i].f.y >> 1;
D [nrbenzi].pb (mp (mijx, mijy));
}
}
else if (seg [i].s.x > bx2.x) {
mijx = bx2.y + seg [i].f.y >> 1;
mijy = bx2.x + seg [i].f.x >> 1;
D [nrbenzi].pb (mp (mijx, mijy));
}
}
}
if (D [nrbenzi].size ()) {
printf ("Mij beg*******************\n");
for (i = 0; i < D [nrbenzi].size (); i++) printf ("%d %d, ", D [nrbenzi][i].f, D [nrbenzi][i].s);
printf ("\nmij end***************************************\n");
}
BEG.pb (mp (bx1.x, bx2.x)); // aici cauti binar 1
}
}
int main () {
int i;
freopen ("poligon.in", "r", stdin);
freopen ("poligon.out", "w", stdout);
scanf ("%d%d\n", &n, &m);
scanf ("%d%d\n", &ins [1].x, &ins [1].y);
//seg.pb (mp (P1, P2)); //seg.pb (mp (P1, P2));
for (i = 2; i <= n; i++) {
scanf ("%d%d\n", &ins [i].x, &ins [i].y);
P1.x = ins [i - 1].x;
P1.y = ins [i - 1].y;
P2.x = ins [i].x;
P2.y = ins [i].y;
seg.pb (mp (P1, P2));
}
seg.pb (mp (ins [n], ins [1]));
for (i = 0; i < n; i++)
printf ("%d %d %d %d\n", seg [i].f.x, seg [i].f.y, seg [i].s.x, seg [i].s.y);
//sort (seg.begin (), seg.end (), cmp);
sort (ins + 1, ins + n + 1, cmp);
printf ("---------------------------------------\n");
preproc ();
//for (i = 0; i <= n; i++) printf ("%d %d\n", BEG [i].f, BEG [i].s);
/*while (m--) {
scanf ("%d%d\n", &a, &b);
solve (a, b);
}*/
//for (i = 1; i <= nrbenzi; i++) printf ("%d %d\n", V [i].x, V [i].y);
return 0;
}