#include<bits/stdc++.h>
using namespace std;
#define X first
#define Y second
#define eps 1e-2
#define gcd __gcd
#define pb push_back
#define PI acos(-1.0)
#define lowbit(x) (x)&(-x)
#define bug printf("!!!!!\n");
#define mem(x,y) memset(x,y,sizeof(x))
typedef long long LL;
typedef long double LD;
typedef pair<int,int> pii;
typedef unsigned long long uLL;
#define int long long
const int maxn = 3e5+2;
const int INF = 1<<30;
const int mod = 1e9+7;
int n,k;
int l[maxn],r[maxn];
struct node {
int l, r, id;
};
priority_queue<int> q;
bool cmp(node x,node y){
return x.l<y.l;
}
node nd[maxn];
void solve(){
scanf("%lld%lld",&n,&k);
for(int i=1;i<=n;i++) {
scanf("%lld%lld",&l[i],&r[i]);
nd[i]={l[i],r[i],i};
}
sort(nd+1,nd+1+n,cmp);
int res=0,L=-1,R=-1;
for(int i=1;i<=n;i++){
q.push(-nd[i].r);
if(q.size()>k) q.pop();
if(q.size()==k){
int now=(-q.top())-nd[i].l+1;
if(res<now){
res=now;
L=nd[i].l;
R=(-q.top());
}
}
}
cout<<res<<endl;
if(res==0){
for(int i=1;i<=k;i++) cout<<i<<" ";cout<<endl;
}else{
for(int i=1,j=1;i<=n&&j<=k;i++){
if(nd[i].l<=L&&nd[i].r>=R){
++j;cout<<nd[i].id<<" ";
}
}cout<<endl;
}
return;
}
int32_t main()
{
int t = 1;
while(t--){
solve();
}
return 0;
}