#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    long int nach[n];
    long int kraj[n];
    for (int a=0; a<n; a++)
    {
        cin>>nach[n]>>kraj[n];
    }
    for (int a=0; a<n; a++)
    {
        for (int b=0; b<a; b++)
        {
            if (nach[b]>nach[a])
            {
                swap(nach[b],nach[a]);
                swap(kraj[a],kraj[b]);
            }
        }
    }
    for (int a=0; a<n; a++)
    {
        if (nach[a]==nach[a+1])
        {
            int b=0;
            while (nach[a+b+1]==nach[a]) b++;

            for (int c=a; c<=a+b; c++)
            {

                for (int d=a; d<c; d++)
                {
                    if (kraj[d]>kraj[c])
                    {
                        swap(kraj[d],kraj[c]);
                    }
                }
            }

            a+=b+1;
        }

    }
    for (int a=0; a<n; a++){
        cout<<nach[a]<<" "<<kraj[a]<<endl;
    }
    long int nac=0,maxn=0,seg=1;
    int br=0;
    while (nac<n)
    {
        for (int a=nac; a>0; a++)
        {
            if (seg<=kraj[a])
            {
                nac++;
            }
            else
            {
                if (seg>=nach[a])
                {
                    if (nac-a>maxn)
                    {
                        maxn=nac-a;
                        br=1;
                    }
                    if (nac-a==maxn) br++;
                    break;
                }
            }
        }
        seg++;
    }
    cout<<maxn<<endl;
    cout<<br;
    return 0;
}
