#include using namespace std; using P = pair; int main(){ int N, K; cin >> N >> K; vector L(N), R(N); vector

v(N); for(int i = 0; i < N; i++){ cin >> L[i] >> R[i]; v[i] = P(L[i], R[i]); } sort(v.begin(), v.end()); vector

w; for(int idx = 0; auto [l, r] : v){ w.emplace_back(l, idx); w.emplace_back(r, -(idx + 1)); idx++; } sort(w.begin(), w.end()); const int B = 20; vector> doubling(N, vector(B, -1)); priority_queue, greater

> pq; for(int i = (int)w.size() - 1; i >= 0; i--){ auto [t, idx] = w[i]; if(idx >= 0){ pq.emplace(v[idx].second, idx); }else if(!pq.empty()){ auto [tt, tidx] = pq.top(); doubling[-1 * idx - 1][0] = tidx; } } for(int i = 0; i < B - 1; i++){ for(int j = 0; j < N; j++){ if(doubling[j][i] == -1) continue; doubling[j][i + 1] = doubling[doubling[j][i]][i]; } } const int inf = 1'000'000'100; // 1e9 + 100 int ans = inf; for(int i = 0; i < N; i++){ int cur = i; for(int j = 0; j < B; j++){ if(cur == -1) break; if(((K - 1) >> j) & 1) cur = doubling[cur][j]; } if(cur != -1) ans = min(ans, v[cur].second - v[i].first); } if(ans != inf) cout << ans << endl; else cout << -1 << endl; }