#include <bits/stdc++.h>
using namespace std;
class Ft {
  vector<long long> ft;

 public:
  Ft(int n) { ft.assign(n + 1, 0); }
  int rsq(int b) {
    int sum = 0;
    for (; b; b -= (b & (-b))) sum += ft[b];
    return sum;
  }
  int rsq(int a, int b) { return rsq(b) - (a == 1 ? 0 : rsq(a - 1)); }
  void adjust(int k, int v) {
    for (; k < (int)ft.size(); k += (k & (-k))) ft[k] += v;
  }
};
Ft ft(3);
int bin(int i, int k) {
  int lower = 0;
  int upper = i;
  for (int i = 0; i < 35; i++) {
    int mid = (lower + upper) / 2;
    if (ft.rsq(mid) >= k)
      upper = mid;
    else
      lower = mid;
  }
  return upper;
}
int main() {
  long long n, k;
  while (cin >> n >> k) {
    set<pair<long long, long long> > le;
    vector<pair<long long, long long> > points, le2, re;
    map<pair<long long, long long>, pair<long long, long long> > m;
    for (int i = 0; i < n; i++) {
      int l, r;
      scanf("%d %d", &l, &r);
      points.push_back(pair<long long, long long>(l, r));
      le.insert(pair<long long, long long>(l, i));
      le2.push_back(pair<long long, long long>(l, i));
      re.push_back(pair<long long, long long>(r, i));
      m[pair<long long, long long>(r, i)] = pair<long long, long long>(l, i);
    }
    sort(re.begin(), re.end());
    sort(le2.begin(), le2.end());
    ft = Ft(n + 2);
    for (int i = 0; i < n; i++) ft.adjust(i + 1, 1);
    long long len = 0, l, r;
    for (int i = 0; i < n; i++) {
      long long v = re[i].first;
      set<pair<long long, long long> >::iterator it =
          le.lower_bound(pair<long long, long long>(v, n + 1));
      it--;
      int pp = lower_bound(le2.begin(), le2.end(), (*it)) - le2.begin();
      long long sum = ft.rsq(pp + 1);
      if (sum >= k) {
        int pos = bin(pp + 1, k) - 1;
        if (len < v - le2[pos].first + 1) {
          l = le2[pos].first;
          r = v;
          len = r - l + 1;
        }
      }
      int pos = lower_bound(le2.begin(), le2.end(), m[re[i]]) - le2.begin() + 1;
      ft.adjust(pos, -1);
      le.erase(m[re[i]]);
    }
    if (len == 0) {
      cout << 0 << endl;
      for (int i = 0; i < k; i++) cout << (i + 1) << " ";
      cout << endl;
      continue;
    }
    cout << len << endl;
    len = 0;
    for (int i = 0; i < n && len < k; i++) {
      if (points[i].first <= l && points[i].second >= r)
        printf("%d ", i + 1), len++;
    }
    cout << endl;
  }
}
