#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  cin >> n >> k;
  vector<tuple<int, int, int>> vec;
  for (int i = 0; i < n; i++) {
    int a, b;
    cin >> a >> b;
    vec.push_back(make_tuple(a, b, i));
  }
  sort(vec.begin(), vec.end());
  set<pair<int, int>> st;
  int ans = 0;
  for (int i = 0; i < vec.size(); i++) {
    int a = get<0>(vec[i]), b = get<1>(vec[i]), ind = get<2>(vec[i]);
    while (st.size() > 0 && st.begin()->first < a) st.erase(st.begin());
    st.insert({b, ind});
    if (st.size() == k) {
      ans = max(ans, st.begin()->first - a + 1);
      st.erase(st.begin());
    }
  }
  st.clear();
  cout << ans << '\n';
  if (ans == 0) {
    for (int i = 0; i < k; i++) cout << i + 1 << ' ';
    return 0;
  }
  for (int i = 0; i < vec.size(); i++) {
    int a = get<0>(vec[i]), b = get<1>(vec[i]), ind = get<2>(vec[i]);
    while (st.size() > 0 && st.begin()->first < a) st.erase(st.begin());
    st.insert({b, ind});
    if (st.size() == k) {
      if (ans == st.begin()->first - a + 1) {
        for (auto elem : st) {
          cout << elem.second + 1 << ' ';
        }
        return 0;
      } else {
        st.erase(st.begin());
      }
    }
  }
  return 0;
}
