#include <bits/stdc++.h>
#define ll long long
#define pll pair<ll,ll>
#define foru(i,a,b) for(ll i=(a);i<=(b);i++)
#define ford(i,a,b) for(ll i=(a);i>=(b);i--)
#define ALL(a) a.begin(),a.end()
#define ROUND(x) fixed<<setprecision(x)
#define fi first
#define se second
using namespace std;
const int N=1e6+5;
int n,m;
int a[N*2];
signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    if(fopen("venue.inp","r")){
        freopen("venue.inp","r",stdin);
        freopen("venue.out","w",stdout);
    }
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    for(int i=n+1;i<=n*2;i++)a[i]=a[i-n]+m;
    a[n*2+1]=a[1]+m*2;
    int ma=1e18,vt=0;
    for(int i=1;i<=n;i++){
        int mid1=(a[i+n]+a[i+n-1])/2;
        int mid2=(mid1+(m+1)/2);
        while(mid2>a[i+n-1])mid2-=m;
        int vt1=(lower_bound(a+i,a+i+n,mid1-(m+1)/2)-a);
        int vt2=vt1-1;

        int x1=max(min(abs(a[vt1]-mid1),m-abs(a[vt1]-mid1)),min(abs(a[vt2]-mid1),m-abs(a[vt2]-mid1)));
        int x2=max(min(abs(a[i]-mid2),m-abs(a[i]-mid2)),min(abs(a[i+n-1]-mid2),m-abs(a[i+n-1]-mid2)));

        if(ma>x1){
            ma=x1;
            vt=mid1;
        }
        if(ma>x2){
            ma=x2;
            vt=mid2;
        }
    }
    cout<<ma<<' '<<(vt%m==0?m:vt%m);
    return 0;
}