#include <bits/stdc++.h>
using namespace std;
#ifdef DEBUG
ifstream in_file("minta/be2.txt");
#define input in_file
#define INTHENAMEOFGOD
#else
#define input cin
#define INTHENAMEOFGOD \
ios::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
#endif
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef pair<ll, ll> pii;
ll N, a, b;
vector<ll> lsort, rsort;
inline ll talalkaszam(ll bal, ll jobb) {
ll baltol_jobbra = rsort.end() - lower_bound(rsort.begin(), rsort.end(), bal);
ll jobbtol_balra = upper_bound(lsort.begin(), lsort.end(), jobb) - lsort.begin();
return baltol_jobbra + jobbtol_balra - N;
}
int main() {
INTHENAMEOFGOD
input >> N;
lsort.reserve(N);
rsort.reserve(N);
for (ll n = 0; n < N; n++) {
input >> a >> b;
lsort.push_back(a);
rsort.push_back(b);
}
sort(lsort.begin(), lsort.end());
sort(rsort.begin(), rsort.end());
ll min_tszam = LLONG_MAX, min_hossz = LLONG_MAX, min_kibal, min_kijobb;
for (ll kibaljobb : lsort) {
if (talalkaszam(kibaljobb, kibaljobb) == N/2+N%2) {
cout << 1 << "\n" << kibaljobb << " " << kibaljobb << "\n";
exit(0);
}
}
for (auto kibal : rsort) {
ll l = kibal;
ll r = 100000;
ll kijobb;
while (l <= r) {
kijobb = (l+r)/2;
if (l == r) {
break;
}
ll tszam = talalkaszam(kibal, kijobb);
if (tszam < N/2+N%2) {
l = kijobb+1;
}
else if (tszam > N/2+N%2) {
r = kijobb-1;
}
else if (tszam == N/2+N%2) {
r = kijobb;
}
}
ll tszam = talalkaszam(kibal, kijobb);
if (
tszam >= N/2+N%2
&& (tszam < min_tszam || (tszam == min_tszam && kijobb-kibal < min_hossz))
) {
min_hossz = kijobb-kibal;
min_tszam = tszam;
min_kibal = kibal;
min_kijobb = kijobb;
}
}
cout << min_kijobb-min_kibal+1 << "\n" << min_kibal << " " << min_kijobb << "\n";
}