#include <bits/stdc++.h>
using namespace std;
pair<pair<int, int>, int> p[500005];
int L[500005], R[500005];
int main() {
  int n, k, pointer = -1;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> L[i] >> R[i];
    p[i].first.first = L[i];
    p[i].first.second = R[i];
    p[i].second = i;
  }
  sort(p, p + n);
  set<pair<int, int> > l, r;
  vector<int> ans;
  int i = 0, v = 0, g, h, flag = 0;
  for (int i = 0; i < n; i++) {
    if (l.size() < k) {
      l.insert(make_pair(p[i].first.first, p[i].second));
      r.insert(make_pair(p[i].first.second, p[i].second));
    } else {
      int index = r.begin()->second;
      r.erase(r.begin());
      l.erase({L[index], index});
      l.insert(make_pair(p[i].first.first, p[i].second));
      r.insert(make_pair(p[i].first.second, p[i].second));
    }
    if (l.size() == k) {
      g = (--l.end())->first;
      h = r.begin()->first;
      if (h - g >= 0) {
        flag = 1;
        if (h - g + 1 > v) {
          pointer = i;
          v = h - g + 1;
        }
      }
    }
  }
  if (flag == 0) {
    cout << 0 << "\n";
    for (int i = 0; i < k; i++) cout << i + 1 << " ";
    cout << "\n";
  } else {
    l.clear();
    r.clear();
    for (int i = 0; i < n; i++) {
      if (l.size() < k) {
        l.insert(make_pair(p[i].first.first, p[i].second));
        r.insert(make_pair(p[i].first.second, p[i].second));
      } else {
        int index = r.begin()->second;
        r.erase(r.begin());
        l.erase({L[index], index});
        l.insert(make_pair(p[i].first.first, p[i].second));
        r.insert(make_pair(p[i].first.second, p[i].second));
      }
      if (pointer == i) {
        cout << v << "\n";
        for (set<pair<int, int> >::iterator it = l.begin(); it != l.end(); it++)
          ans.push_back(it->second);
        sort(ans.begin(), ans.end());
        for (vector<int>::iterator it = ans.begin(); it != ans.end(); it++)
          cout << *it + 1 << " ";
        cout << "\n";
      }
    }
  }
  return 0;
}
