#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
int n, k;
long long l[N], r[N];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k;
  vector<tuple<long long, long long, int>> ve;
  for (int i = (1); i < (n + 1); i++) {
    cin >> l[i] >> r[i];
    ve.emplace_back(l[i], r[i], i);
  }
  sort((ve).begin(), (ve).end());
  priority_queue<long long, vector<long long>, greater<long long>> Q;
  long long ans = 0;
  for (int i = (0); i < (n); i++) {
    long long L, R;
    tie(L, R, ignore) = ve[i];
    if (((int)(Q).size()) < k) {
      Q.push(R);
    } else {
      if (Q.top() < R) {
        Q.pop();
        Q.push(R);
      }
    }
    if (((int)(Q).size()) == k) {
      ans = max(ans, Q.top() - L + 1);
    }
  }
  cout << ans << '\n';
  priority_queue<pair<long long, int>, vector<pair<long long, int>>,
                 greater<pair<long long, int>>>
      Q2;
  for (int i = (0); i < (n); i++) {
    auto [L, R, I] = ve[i];
    if (((int)(Q2).size()) < k) {
      Q2.emplace(R, I);
    } else {
      if (Q2.top().first < R) {
        Q2.pop();
        Q2.emplace(R, I);
      }
    }
    if (((int)(Q2).size()) == k &&
        (Q2.top().first - L + 1 == ans || ans == 0)) {
      while (!Q2.empty()) {
        int j = Q2.top().second;
        Q2.pop();
        cout << j << ' ';
      }
      cout << '\n';
      return 0;
    }
  }
}
