#include <bits/stdc++.h>
using namespace std;
int n, k;
const int kMaxN = 330000;
struct Interval {
  int l, r;
  int id;
  bool operator<(const Interval& b) const { return r > b.r; }
} itv[kMaxN];
bool cmp(Interval a, Interval b) { return a.l < b.l; }
priority_queue<Interval> pq;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++)
    scanf("%d%d", &itv[i].l, &itv[i].r), itv[i].id = i;
  sort(itv, itv + n, cmp);
  int len = 0;
  int l = 1, r = 1;
  for (int i = 0; i < k; i++) {
    pq.push(itv[i]);
  }
  if (pq.top().r - itv[k - 1].l + 1 > len) {
    len = pq.top().r - itv[k - 1].l + 1;
    l = itv[k - 1].l, r = pq.top().r;
  }
  for (int i = k; i < n; i++) {
    pq.pop();
    pq.push(itv[i]);
    if (pq.top().r - itv[i].l + 1 > len) {
      len = pq.top().r - itv[i].l + 1;
      l = itv[i].l, r = pq.top().r;
    }
  }
  cout << len << endl;
  if (len == 0) {
    for (int i = 0; i < k; i++) printf("%d%c", i + 1, i == k - 1 ? '\n' : ' ');
    return 0;
  }
  for (int i = 0; i < n && k; i++) {
    if (itv[i].l <= l && itv[i].r >= r) {
      if (k == 1)
        printf("%d\n", itv[i].id + 1);
      else
        printf("%d ", itv[i].id + 1);
      k--;
    }
  }
  return 0;
}
