#include <bits/stdc++.h>
const double pi = (double)(2.0 * acos(0.0));
const int inf = 1 << 30;
const double eps = 1E-9;
const double e = exp(1.0);
const int sz = 300000 + 5;
using namespace std;
const long long int mod = 1000000000 + 7;
struct st {
  int id, l, r;
} s[sz];
bool cmp(st p, st q) {
  if (p.l != q.l) return (p.l < q.l);
  if (p.r != q.r) return (p.r < q.r);
  return (p.id < q.id);
}
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  for (long long int i = 0; i < n; i++) {
    s[i].id = i + 1;
    scanf("%d %d", &s[i].l, &s[i].r);
  }
  sort(s, s + n, cmp);
  int res;
  vector<int> v1, v2;
  set<int> S1;
  set<pair<int, int> > S2;
  for (int i = 0; i < n; i++) {
    if (i < k) {
      S1.insert(s[i].id);
      S2.insert(make_pair(s[i].r, s[i].id));
      if (i == k - 1) res = max(0, (*S2.begin()).first - s[i].l + 1);
      continue;
    }
    pair<int, int> tmp = (*S2.begin());
    if (tmp.first < s[i].r) {
      S2.erase(tmp);
      S2.insert(make_pair(s[i].r, s[i].id));
      v1.push_back(s[i].id);
      v2.push_back(tmp.second);
      int res1 = (*S2.begin()).first - s[i].l + 1;
      if (res1 > res) {
        res = res1;
        for (int x = 0, y = (int)v2.size(); x < y; x++)
          S1.erase(v2[x]), S1.insert(v1[x]);
        v1.clear();
        v2.clear();
      }
    }
  }
  printf("%d\n", res);
  int j = 1;
  for (set<int>::iterator it = S1.begin(); it != S1.end(); it++, j++) {
    printf("%d%c", *it, j < k ? ' ' : '\n');
  }
  return 0;
}
