#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e6;
int N, K;
pair<int, int> seg[MAXN];
int dic[MAXN];
int dh;
int val[MAXN];
void add(int o, int p, int l, int r, int x) {
  if (r - l <= 1) {
    val[o] += x;
    return;
  }
  if (p < ((r + l) >> 1))
    add(((o << 1)), p, l, ((r + l) >> 1), x);
  else
    add(((o << 1) | 1), p, ((r + l) >> 1), r, x);
  val[o] = val[((o << 1))] + val[((o << 1) | 1)];
}
int findPos(int o, int k, int l, int r) {
  if (r - l <= 1) return l;
  if (val[((o << 1) | 1)] >= k)
    return findPos(((o << 1) | 1), k, ((r + l) >> 1), r);
  else
    return findPos(((o << 1)), k - val[((o << 1) | 1)], l, ((r + l) >> 1));
}
pair<int, int> out[MAXN];
int L[MAXN], R[MAXN];
int main() {
  cin >> N >> K;
  for (int i = 0; i < N; i++) {
    scanf("%d%d", &seg[i].first, &seg[i].second);
    dic[dh++] = seg[i].second;
    L[i] = seg[i].first;
    R[i] = seg[i].second;
  }
  dic[dh++] = -2e9;
  sort(dic, dic + N);
  dh = unique(dic, dic + N) - dic;
  sort(seg, seg + N);
  int ans = 0;
  int p = 0;
  for (int i = 0; i < N; i++) {
    add(1, (lower_bound(dic, dic + dh, seg[i].second) - dic), 0, dh, 1);
    int res = findPos(1, K, 0, dh);
    if (dic[res] < seg[i].first || i < K - 1) continue;
    int tmp = dic[res] - seg[i].first + 1;
    if (tmp > ans) {
      ans = tmp;
      p = i;
    }
  }
  cout << ans << endl;
  if (ans == 0) {
    for (int i = 0; i < K; i++) {
      printf("%d ", i + 1);
    }
    return 0;
  }
  int oh = 0;
  for (int i = 0; i < N; i++) {
    if (L[i] <= seg[p].first) {
      out[oh++] = pair<int, int>(R[i], i);
    }
  }
  sort(out, out + oh, greater<pair<int, int> >());
  for (int i = 0; i < K; i++) {
    printf("%d ", out[i].second + 1);
  }
  return 0;
}
