#include <bits/stdc++.h>
using namespace std;
template <typename T>
T getint() {
  T x = 0, p = 1;
  char ch;
  do {
    ch = getchar();
  } while (ch <= ' ');
  if (ch == '-') p = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * p;
}
template <typename T1, typename T2>
bool umin(T1 &x, const T2 &y) {
  if (x > y) return x = y, true;
  return false;
}
template <typename T1, typename T2>
bool umax(T1 &x, const T2 &y) {
  if (x < y) return x = y, true;
  return false;
}
const int maxn = (int)3e5 + 10;
const int inf = (int)1e9 + 5;
const int mod = (int)1e9 + 7;
const long long llinf = (long long)1e18 + 5;
const double pi = acos(-1.0);
pair<pair<int, int>, int> a[maxn];
int fw[maxn];
void add(int v, int x) {
  for (; v < maxn; v |= v + 1) fw[v] += x;
}
int sum(int x) {
  int ret = 0;
  for (; x >= 0; x = (x & (x + 1)) - 1) ret += fw[x];
  return ret;
}
int get(int x) {
  int l = -1, r = maxn - 1;
  while (r - l > 1) {
    int md = (l + r) / 2;
    if (sum(md) >= x)
      r = md;
    else
      l = md;
  }
  return r;
}
int main() {
  int n;
  cin >> n;
  int k;
  cin >> k;
  vector<pair<int, int> > b;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i].first.first >> a[i].first.second;
    a[i].second = i;
    b.push_back(make_pair(a[i].first.second, a[i].second));
  }
  sort((b).begin(), (b).end());
  sort(a + 1, a + n + 1);
  int bl = inf, br = -inf;
  for (int i = 1; i <= n; ++i) {
    int r = lower_bound((b).begin(), (b).end(),
                        make_pair(a[i].first.second, a[i].second)) -
            b.begin();
    add(r, 1);
    int cnt = sum(maxn - 1);
    if (cnt < k) continue;
    int R;
    if (cnt - sum(r - 1) >= k) {
      R = a[i].first.second;
    } else {
      int c = get(cnt - k + 1);
      R = b[c].first;
    }
    if (br - bl < R - a[i].first.first) {
      br = R;
      bl = a[i].first.first;
    }
  }
  if (bl > br) {
    cout << 0 << endl;
    for (int i = 1; i <= k; ++i) cout << i << ' ';
    return 0;
  }
  vector<int> ok;
  for (int i = (1); i < (n + 1); i++) {
    if (a[i].first.first <= bl && br <= a[i].first.second)
      ok.push_back(a[i].second);
  }
  while (ok.size() > k) ok.pop_back();
  cout << br - bl + 1 << endl;
  for (int x : ok) cout << x << ' ';
  return 0;
}
