#include <bits/stdc++.h>
using namespace std;
#define int long long
#define cint const int
#define left(id) (id << 1)
#define right(id) (id << 1 | 1)
const int MAXN = 2e5 + 15;
const int oo = 1e18;
int N, K;
int A[MAXN];
struct Seg {
int it[MAXN * 4];
void update(cint &id, cint &l, cint &r, cint &u, cint &v, cint &val) {
if (l > v || r < u) return;
if (u <= l && r <= v) return void(it[id] = min(it[id], val));
int mid = (l + r) / 2;
update(left(id), l, mid, u, v, val);
update(right(id), mid + 1, r, u, v, val);
it[id] = min(it[left(id)], it[right(id)]);
}
int get(cint &id, cint &l, cint &r, cint &u, cint &v) {
if (l > v || r < u) return oo;
if (u <= l && r <= v) return it[id];
int mid = (l + r) / 2;
int it1 = get(left(id), l, mid, u, v);
int it2 = get(right(id), mid + 1, r, u, v);
return min(it1, it2);
}
int walk(cint &id, cint &l, cint &r, cint &u, cint &v, cint &val) {
if (l > v || r < u || it[id] > val) return -1;
if (l == r) return l;
int mid = (l + r) / 2;
int it2 = walk(right(id), mid + 1, r, u, v, val);
if (it2 == -1) return walk(left(id), l, mid, u, v, val);
else return it2;
}
void INIT() {
memset(it, 60, sizeof it);
update(1, 0, N, 0, 0, -oo);
}
} ST;
bool check(int G) {
int best = 0;
ST.INIT();
for (int i = 1; i <= N; i++) {
if (A[i] == -1) {
int a = ST.get(1, 0, N, best, best) + G;
if (best == 0) a = -oo;
ST.update(1, 0, N, best + 1, best + 1, a);
best++;
if (best >= K) return true;
continue;
}
int nr = ST.walk(1, 0, N, 0, best, A[i] - G);
ST.update(1, 0, N, nr + 1, nr + 1, A[i]);
best = max(best, nr + 1);
if (best >= K) return true;
}
return 0;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> K;
for (int i = 1; i <= N; i++) cin >> A[i];
int l = -1, r = oo;
while (r > l + 1) {
int mid = (l + r) / 2;
if (check(mid)) l = mid;
else r = mid;
}
if (check(oo)) cout << "Infinity";
else cout << l;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGNpbnQgY29uc3QgaW50CiNkZWZpbmUgbGVmdChpZCkgKGlkIDw8IDEpCiNkZWZpbmUgcmlnaHQoaWQpIChpZCA8PCAxIHwgMSkKCmNvbnN0IGludCBNQVhOID0gMmU1ICsgMTU7CmNvbnN0IGludCBvbyAgID0gMWUxODsKCmludCBOLCBLOwppbnQgQVtNQVhOXTsKCnN0cnVjdCBTZWcgewogICAgaW50IGl0W01BWE4gKiA0XTsKICAgIHZvaWQgdXBkYXRlKGNpbnQgJmlkLCBjaW50ICZsLCBjaW50ICZyLCBjaW50ICZ1LCBjaW50ICZ2LCBjaW50ICZ2YWwpIHsKICAgICAgICBpZiAobCA+IHYgfHwgciA8IHUpIHJldHVybjsKICAgICAgICBpZiAodSA8PSBsICYmIHIgPD0gdikgcmV0dXJuIHZvaWQoaXRbaWRdID0gbWluKGl0W2lkXSwgdmFsKSk7CgogICAgICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgICAgICB1cGRhdGUobGVmdChpZCksIGwsIG1pZCwgdSwgdiwgdmFsKTsKICAgICAgICB1cGRhdGUocmlnaHQoaWQpLCBtaWQgKyAxLCByLCB1LCB2LCB2YWwpOwoKICAgICAgICBpdFtpZF0gPSBtaW4oaXRbbGVmdChpZCldLCBpdFtyaWdodChpZCldKTsKICAgIH0KCiAgICBpbnQgZ2V0KGNpbnQgJmlkLCBjaW50ICZsLCBjaW50ICZyLCBjaW50ICZ1LCBjaW50ICZ2KSB7CiAgICAgICAgaWYgKGwgPiB2IHx8IHIgPCB1KSByZXR1cm4gb287CiAgICAgICAgaWYgKHUgPD0gbCAmJiByIDw9IHYpIHJldHVybiBpdFtpZF07CgogICAgICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgICAgICBpbnQgaXQxID0gZ2V0KGxlZnQoaWQpLCBsLCBtaWQsIHUsIHYpOwogICAgICAgIGludCBpdDIgPSBnZXQocmlnaHQoaWQpLCBtaWQgKyAxLCByLCB1LCB2KTsKCiAgICAgICAgcmV0dXJuIG1pbihpdDEsIGl0Mik7CiAgICB9CgogICAgaW50IHdhbGsoY2ludCAmaWQsIGNpbnQgJmwsIGNpbnQgJnIsIGNpbnQgJnUsIGNpbnQgJnYsIGNpbnQgJnZhbCkgewogICAgICAgIGlmIChsID4gdiB8fCByIDwgdSB8fCBpdFtpZF0gPiB2YWwpIHJldHVybiAtMTsKICAgICAgICBpZiAobCA9PSByKSByZXR1cm4gbDsKCiAgICAgICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgICAgIGludCBpdDIgPSB3YWxrKHJpZ2h0KGlkKSwgbWlkICsgMSwgciwgdSwgdiwgdmFsKTsKICAgICAgICBpZiAoaXQyID09IC0xKSByZXR1cm4gd2FsayhsZWZ0KGlkKSwgbCwgbWlkLCB1LCB2LCB2YWwpOwogICAgICAgIGVsc2UgcmV0dXJuIGl0MjsKICAgIH0KCiAgICB2b2lkIElOSVQoKSB7CiAgICAgICAgbWVtc2V0KGl0LCA2MCwgc2l6ZW9mIGl0KTsKICAgICAgICB1cGRhdGUoMSwgMCwgTiwgMCwgMCwgLW9vKTsKICAgIH0KfSBTVDsKCmJvb2wgY2hlY2soaW50IEcpIHsKICAgIGludCBiZXN0ID0gMDsKICAgIFNULklOSVQoKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewogICAgICAgIGlmIChBW2ldID09IC0xKSB7CiAgICAgICAgICAgIGludCBhID0gU1QuZ2V0KDEsIDAsIE4sIGJlc3QsIGJlc3QpICsgRzsKICAgICAgICAgICAgaWYgKGJlc3QgPT0gMCkgYSA9IC1vbzsKICAgICAgICAgICAgU1QudXBkYXRlKDEsIDAsIE4sIGJlc3QgKyAxLCBiZXN0ICsgMSwgYSk7CiAgICAgICAgICAgIGJlc3QrKzsKICAgICAgICAgICAgaWYgKGJlc3QgPj0gSykgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpbnQgbnIgPSBTVC53YWxrKDEsIDAsIE4sIDAsIGJlc3QsIEFbaV0gLSBHKTsKICAgICAgICBTVC51cGRhdGUoMSwgMCwgTiwgbnIgKyAxLCBuciArIDEsIEFbaV0pOwogICAgICAgIGJlc3QgPSBtYXgoYmVzdCwgbnIgKyAxKTsKICAgICAgICBpZiAoYmVzdCA+PSBLKSByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiAwOwp9CgoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKICAgIGNpbiA+PiBOID4+IEs7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyBpKyspIGNpbiA+PiBBW2ldOwoKICAgIGludCBsID0gLTEsIHIgPSBvbzsKICAgIHdoaWxlIChyID4gbCArIDEpIHsKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYgKGNoZWNrKG1pZCkpIGwgPSBtaWQ7CiAgICAgICAgZWxzZSByID0gbWlkOwogICAgfQogICAgaWYgKGNoZWNrKG9vKSkgY291dCA8PCAiSW5maW5pdHkiOwogICAgZWxzZSBjb3V0IDw8IGw7Cgp9Cg==