#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct point
{
int x;
int y;
};
bool cmpx(point a,point b)
{
return a.x<b.x;
}
bool cmpy(point a,point b)
{
return a.y<b.y;
}
vector <point> vec;
int szuk(double x,double y)
{
int max,min,tab[4]={0,0,0,0},i;
for(i=0;i<vec.size();i++)
{
if(vec[i].x<x) //cw1 i 2
{
if(vec[i].y>y)
tab[0]++;
else
tab[1]++;
}
else //cw 3 i 4;
{
if(vec[i].y>y)
tab[2]++;
else
tab[3]++;
}
}
sort(tab,tab+4);
min=tab[0]; max=tab[3];
//cout<<"max="<<max<<" "<<min<<endl;
return max-min;
}
int main() {
// your code goes here
int t,i,j,maxx,maxy,minx,miny;
double pomx1,pomx2,pomy1,pomy2;
int pom,wyn,min=100000000;
point pkt;
cin>>t;
for(i=0;i<t;i++)
{
cin>>pkt.x>>pkt.y;
vec.push_back(pkt);
}
sort(vec.begin(),vec.end(),cmpx); //sortuje po x;
pom=t/2; //biore srodkowy elem
//cout<<vec[pom].x<<endl;
i=vec[pom].x;
pomx1=vec[pom].x-0.5;
pomx2=vec[pom].x+0.5;
//-------------teraz dla y
sort(vec.begin(),vec.end(),cmpy); //powtarzam dla y;
pom=t/2;
//cout<<vec[pom].y<<endl;
i=vec[pom].y;
pomy1=vec[pom].y-0.5;
pomy2=vec[pom].y+0.5;
cout<<pomx1<<" "<<pomx2<<" "<<pomy1<<" "<<pomy2<<endl;
//------------------------------------------teraz szukanie wyniku z 4 mozliwosci
wyn=szuk(pomx1,pomy1);
if(wyn<min) min=wyn;
wyn=szuk(pomx1,pomy2);
if(wyn<min) min=wyn;
wyn=szuk(pomx2,pomy1);
if(wyn<min) min=wyn;
wyn=szuk(pomx2,pomy2);
if(wyn<min) min=wyn;
cout<<min;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHBvaW50CnsKCWludCB4OwoJaW50IHk7Cn07CmJvb2wgY21weChwb2ludCBhLHBvaW50IGIpCnsKCXJldHVybiBhLng8Yi54Owp9CmJvb2wgY21weShwb2ludCBhLHBvaW50IGIpCnsKCXJldHVybiBhLnk8Yi55Owp9CnZlY3RvciA8cG9pbnQ+IHZlYzsKaW50IHN6dWsoZG91YmxlIHgsZG91YmxlIHkpCnsKCWludCBtYXgsbWluLHRhYls0XT17MCwwLDAsMH0saTsKCQoJZm9yKGk9MDtpPHZlYy5zaXplKCk7aSsrKQoJewoJCWlmKHZlY1tpXS54PHgpICAvL2N3MSBpIDIKCQl7CgkJCWlmKHZlY1tpXS55PnkpCgkJCSAgIHRhYlswXSsrOwoJCQllbHNlCgkJCSAgdGFiWzFdKys7CgkJfQoJCWVsc2UgIC8vY3cgMyBpIDQ7CgkJewoJCQlpZih2ZWNbaV0ueT55KQoJCQkgICB0YWJbMl0rKzsKCQkJZWxzZQoJCQkgIHRhYlszXSsrOwoJCX0KCX0KCXNvcnQodGFiLHRhYis0KTsKCW1pbj10YWJbMF07IG1heD10YWJbM107CgkKCSAgLy9jb3V0PDwibWF4PSI8PG1heDw8IiAiPDxtaW48PGVuZGw7CgkgIHJldHVybiBtYXgtbWluOwp9CmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQogICAgaW50IHQsaSxqLG1heHgsbWF4eSxtaW54LG1pbnk7CiAgICBkb3VibGUgcG9teDEscG9teDIscG9teTEscG9teTI7CiAgICBpbnQgcG9tLHd5bixtaW49MTAwMDAwMDAwOwogICAgcG9pbnQgcGt0OwogICAgCiAgICBjaW4+PnQ7CiAgICBmb3IoaT0wO2k8dDtpKyspCiAgICB7CiAgICAJY2luPj5wa3QueD4+cGt0Lnk7CiAgICAJdmVjLnB1c2hfYmFjayhwa3QpOwogICAgfQogICAgc29ydCh2ZWMuYmVnaW4oKSx2ZWMuZW5kKCksY21weCk7IC8vc29ydHVqZSBwbyB4OwogICAgcG9tPXQvMjsJCQkJCQkJLy9iaW9yZSBzcm9ka293eSBlbGVtCiAgICAvL2NvdXQ8PHZlY1twb21dLng8PGVuZGw7CiAgICBpPXZlY1twb21dLng7CiAgICBwb214MT12ZWNbcG9tXS54LTAuNTsKICAgIHBvbXgyPXZlY1twb21dLngrMC41OwogICAgLy8tLS0tLS0tLS0tLS0tdGVyYXogZGxhIHkKICAgICAgc29ydCh2ZWMuYmVnaW4oKSx2ZWMuZW5kKCksY21weSk7ICAvL3Bvd3RhcnphbSBkbGEgeTsKICAgIHBvbT10LzI7CiAgICAvL2NvdXQ8PHZlY1twb21dLnk8PGVuZGw7CiAgICBpPXZlY1twb21dLnk7CiAgICBwb215MT12ZWNbcG9tXS55LTAuNTsKICAgIHBvbXkyPXZlY1twb21dLnkrMC41OwogICAgCiAgICBjb3V0PDxwb214MTw8IiAiPDxwb214Mjw8IiAiPDxwb215MTw8IiAiPDxwb215Mjw8ZW5kbDsKICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tdGVyYXogc3p1a2FuaWUgd3luaWt1IHogNCBtb3psaXdvc2NpCiAgICB3eW49c3p1ayhwb214MSxwb215MSk7CiAgICBpZih3eW48bWluKSBtaW49d3luOwogICAgd3luPXN6dWsocG9teDEscG9teTIpOwogICAgaWYod3luPG1pbikgbWluPXd5bjsKIAogICAgd3luPXN6dWsocG9teDIscG9teTEpOwogICAgaWYod3luPG1pbikgbWluPXd5bjsKICAgIHd5bj1zenVrKHBvbXgyLHBvbXkyKTsKICAgIGlmKHd5bjxtaW4pIG1pbj13eW47CiAgICBjb3V0PDxtaW47CglyZXR1cm4gMDsKfQ==