#include <bits/stdc++.h>
//_ ************************** Advanced PBDS ***********************************
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template<class T>
using ordered_set = tree<
T,
null_type,
less<T>,
rb_tree_tag,
tree_order_statistics_node_update
>;
//_ ****************************************************************************
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
inline int power(int a, int b, int mod=M) {
int x = 1;
a %= mod;
while (b) {
if (b & 1) x = (x * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return x;
}
//_ ***************************** START Below *******************************
// 8
// 1 3
// 2 4
// 5 6
// 6 7
// 6 10
// 7 8
// 9 10
// 11 12
vector<pair<int,int>> a;
int consistency1(int n){
int maxi = 0;
for(int i=0; i<n; i++){
int s = a[i].first;
int e = a[i].second;
int ct = 0;
for(int j=0; j<n; j++){
int x = a[j].first;
int y = a[j].second;
if(x <= s && y >= s) ct++;
else if( x >= s && x <= e ) ct++;
}
maxi = max(maxi, ct);
}
return n - maxi;
}
//* PBDS
int consistency2(int n){
sort(begin(a), end(a));
ordered_set<pair<int,int>> st;
int maxi = 0;
for(int i = 0; i < n; i++){
int s = a[i].first;
int e = a[i].second;
int left = st.size() - st.order_of_key({s, -INF});
auto it = upper_bound(begin(a) + i + 1, end(a), make_pair(e, INF));
int right = it - (begin(a) + i + 1);
st.insert({e, i});
maxi = max(maxi, left + right + 1);
}
return n - maxi;
}
//* No PBDS
int consistency3(int n) {
vector<int> starts(n), ends(n);
for(int i = 0; i < n; i++) {
starts[i] = a[i].first;
ends[i] = a[i].second;
}
sort(starts.begin(), starts.end());
sort(ends.begin(), ends.end());
int maxi = 0;
for(int i = 0; i < n; i++) {
int s = a[i].first;
int e = a[i].second;
// Count intervals that end strictly before the current one starts
int left_disjoint = lower_bound(ends.begin(), ends.end(), s) - ends.begin();
// Count intervals that start strictly after the current one ends
int right_disjoint = starts.end() - upper_bound(starts.begin(), starts.end(), e);
// Total intersecting = Total intervals - non-intersecting
int intersecting = n - left_disjoint - right_disjoint;
maxi = max(maxi, intersecting);
}
return n - maxi;
}
int practice(int n){
return 0;
}
void solve() {
int n;
cin>> n;
a.resize(n);
for(int i=0; i<n; i++){
int x, y;
cin >> x >> y;
a[i] = {x, y};
}
cout << consistency1(n) << " " << consistency2(n) << " " << consistency3(n) << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKLy9fICoqKioqKioqKioqKioqKioqKioqKioqKioqIEFkdmFuY2VkIFBCRFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwogCnRlbXBsYXRlPGNsYXNzIFQ+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTwKICAgIFQsCiAgICBudWxsX3R5cGUsCiAgICBsZXNzPFQ+LAogICAgcmJfdHJlZV90YWcsCiAgICB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGUKPjsKIAogCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKI2RlZmluZSBpbnQgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBkb3VibGUgICAgICAgICAgIGxvbmcgZG91YmxlCiNkZWZpbmUgcHJpbnQoYSkgICAgICAgICBmb3IoYXV0byB4IDogYSkgY291dCA8PCB4IDw8ICIgIjsgY291dCA8PCBlbmRsCgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCmlubGluZSBpbnQgcG93ZXIoaW50IGEsIGludCBiLCBpbnQgbW9kPU0pIHsKICAgIGludCB4ID0gMTsKICAgIGEgJT0gbW9kOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggPSAoeCAqIGEpICUgbW9kOyAKICAgICAgICBhID0gKGEgKiBhKSAlIG1vZDsKICAgICAgICBiID4+PSAxOwogICAgfQogICAgcmV0dXJuIHg7Cn0KCgovL18gKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU1RBUlQgQmVsb3cgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLy8gOAovLyAxIDMKLy8gMiA0Ci8vIDUgNgovLyA2IDcKLy8gNiAxMAovLyA3IDgKLy8gOSAxMAovLyAxMSAxMgoKCnZlY3RvcjxwYWlyPGludCxpbnQ+PiBhOwoKaW50IGNvbnNpc3RlbmN5MShpbnQgbil7CgoJaW50IG1heGkgPSAwOwoJCglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCWludCBzID0gYVtpXS5maXJzdDsKCQlpbnQgZSA9IGFbaV0uc2Vjb25kOwoJCQoJCWludCBjdCA9IDA7CgkJCgkJZm9yKGludCBqPTA7IGo8bjsgaisrKXsKCQkJCgkJCWludCB4ID0gYVtqXS5maXJzdDsKCQkJaW50IHkgPSBhW2pdLnNlY29uZDsKCQkJCgkJCWlmKHggPD0gcyAmJiB5ID49IHMpIGN0Kys7CgkJCWVsc2UgaWYoIHggPj0gcyAmJiB4IDw9IGUgKSBjdCsrOwoJCQkKCQl9CgkJCgkJCgkJbWF4aSA9IG1heChtYXhpLCBjdCk7Cgl9CgkKCQoJcmV0dXJuIG4gLSBtYXhpOwp9CgoKCgovLyogUEJEUyAKCmludCBjb25zaXN0ZW5jeTIoaW50IG4pewogICAgc29ydChiZWdpbihhKSwgZW5kKGEpKTsKICAgIAogICAgb3JkZXJlZF9zZXQ8cGFpcjxpbnQsaW50Pj4gc3Q7CiAgICBpbnQgbWF4aSA9IDA7CiAgICAKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGludCBzID0gYVtpXS5maXJzdDsKICAgICAgICBpbnQgZSA9IGFbaV0uc2Vjb25kOwogICAgICAgIAogICAgICAgIGludCBsZWZ0ID0gc3Quc2l6ZSgpIC0gc3Qub3JkZXJfb2Zfa2V5KHtzLCAtSU5GfSk7CiAgICAgICAgCiAgICAgICAgYXV0byBpdCA9IHVwcGVyX2JvdW5kKGJlZ2luKGEpICsgaSArIDEsIGVuZChhKSwgbWFrZV9wYWlyKGUsIElORikpOwogICAgICAgIGludCByaWdodCA9IGl0IC0gKGJlZ2luKGEpICsgaSArIDEpOwogICAgICAgIAogICAgICAgIHN0Lmluc2VydCh7ZSwgaX0pOwogICAgICAgIAogICAgICAgIG1heGkgPSBtYXgobWF4aSwgbGVmdCArIHJpZ2h0ICsgMSk7CiAgICB9CiAgICAKICAgIHJldHVybiBuIC0gbWF4aTsKfQoKCgovLyogTm8gUEJEUyAKCmludCBjb25zaXN0ZW5jeTMoaW50IG4pIHsKICAgIHZlY3RvcjxpbnQ+IHN0YXJ0cyhuKSwgZW5kcyhuKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBzdGFydHNbaV0gPSBhW2ldLmZpcnN0OwogICAgICAgIGVuZHNbaV0gPSBhW2ldLnNlY29uZDsKICAgIH0KICAgIAogICAgc29ydChzdGFydHMuYmVnaW4oKSwgc3RhcnRzLmVuZCgpKTsKICAgIHNvcnQoZW5kcy5iZWdpbigpLCBlbmRzLmVuZCgpKTsKICAgIAogICAgaW50IG1heGkgPSAwOwogICAgCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IHMgPSBhW2ldLmZpcnN0OwogICAgICAgIGludCBlID0gYVtpXS5zZWNvbmQ7CiAgICAgICAgCiAgICAgICAgLy8gQ291bnQgaW50ZXJ2YWxzIHRoYXQgZW5kIHN0cmljdGx5IGJlZm9yZSB0aGUgY3VycmVudCBvbmUgc3RhcnRzCiAgICAgICAgaW50IGxlZnRfZGlzam9pbnQgPSBsb3dlcl9ib3VuZChlbmRzLmJlZ2luKCksIGVuZHMuZW5kKCksIHMpIC0gZW5kcy5iZWdpbigpOwogICAgICAgIAogICAgICAgIC8vIENvdW50IGludGVydmFscyB0aGF0IHN0YXJ0IHN0cmljdGx5IGFmdGVyIHRoZSBjdXJyZW50IG9uZSBlbmRzCiAgICAgICAgaW50IHJpZ2h0X2Rpc2pvaW50ID0gc3RhcnRzLmVuZCgpIC0gdXBwZXJfYm91bmQoc3RhcnRzLmJlZ2luKCksIHN0YXJ0cy5lbmQoKSwgZSk7CiAgICAgICAgCiAgICAgICAgLy8gVG90YWwgaW50ZXJzZWN0aW5nID0gVG90YWwgaW50ZXJ2YWxzIC0gbm9uLWludGVyc2VjdGluZwogICAgICAgIGludCBpbnRlcnNlY3RpbmcgPSBuIC0gbGVmdF9kaXNqb2ludCAtIHJpZ2h0X2Rpc2pvaW50OwogICAgICAgIAogICAgICAgIG1heGkgPSBtYXgobWF4aSwgaW50ZXJzZWN0aW5nKTsKICAgIH0KICAgIAogICAgcmV0dXJuIG4gLSBtYXhpOwp9CgoKCgoKCgoKCmludCBwcmFjdGljZShpbnQgbil7CgoKICAgIHJldHVybiAwOwp9CgoKCgoKdm9pZCBzb2x2ZSgpIHsKICAgIAogICAgaW50IG47CiAgICBjaW4+PiBuOwogICAgCiAgICBhLnJlc2l6ZShuKTsKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CiAgICAJaW50IHgsIHk7CiAgICAJY2luID4+IHggPj4geTsKICAgIAlhW2ldID0ge3gsIHl9OwogICAgfQogICAgCiAgICBjb3V0IDw8IGNvbnNpc3RlbmN5MShuKSA8PCAiICIgPDwgY29uc2lzdGVuY3kyKG4pIDw8ICIgIiA8PCBjb25zaXN0ZW5jeTMobikgPDwgZW5kbDsKCgp9CgoKCgoKaW50MzJfdCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgaW50IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==