#include <iostream>
#include <vector>
using namespace std;
// Używamy __int128 do obsługi ogromnych liczb, które mogą powstać przy mnożeniu k * suma
typedef __int128_t int128;
int main() {
// Optymalizacja wejścia/wyjścia
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long n_in, k_in, s_in;
if (!(cin >> n_in >> k_in >> s_in)) return 0;
int128 n = n_in;
int128 k = k_in;
int128 s = s_in;
// Krok 1: Sprawdzenie warunku początkowego
if (s <= 0) {
cout << "Julian zgasl..." << endl;
return 0;
}
vector<long long> a(n_in);
int128 min_prefix = 0; // Najniższy punkt w trakcie jednego cyklu (względem startu cyklu)
int128 current_prefix = 0;
int128 cycle_sum = 0;
// Wczytujemy dane i analizujemy pierwszy cykl "na sucho" pod kątem statystyk
// oraz sprawdzamy, czy padniemy już w pierwszym obiegu.
for (int i = 0; i < n_in; ++i) {
cin >> a[i];
current_prefix += a[i];
if (current_prefix < min_prefix) {
min_prefix = current_prefix;
}
// Sprawdzamy czy zginęliśmy w trakcie 1. cyklu (symulacja on-the-fly)
if (s + current_prefix <= 0) {
cout << i + 1 << endl;
return 0;
}
}
cycle_sum = current_prefix;
// Zaktualizuj s po pierwszym pełnym cyklu
s += cycle_sum;
// Jeśli przetrwaliśmy 1. cykl i suma jest nieujemna, to nigdy nie spadniemy
// (bo startujemy z wyższego lub równego poziomu)
if (cycle_sum >= 0) {
cout << "Nic nas nie powstrzyma!" << endl;
return 0;
}
// Pozostało k-1 cykli do wykonania
int128 cycles_left = k - 1;
if (cycles_left <= 0) {
// Jeśli mieliśmy wykonać tylko 1 cykl i go przeżyliśmy
cout << "Nic nas nie powstrzyma!" << endl;
return 0;
}
// Matematyczne wyliczenie ile cykli możemy bezpiecznie pominąć.
// Szukamy takiego C, że: s + C * cycle_sum + min_prefix > 0
// A padamy w następnym.
// Ponieważ cycle_sum jest ujemne, użyjmy wartości dodatniej dla dzielenia:
int128 drop_per_cycle = -cycle_sum;
// Chcemy przetrwać: s + min_prefix > C * drop_per_cycle
// Czyli max C = (s + min_prefix - 1) / drop_per_cycle
int128 numerator = s + min_prefix;
// Jeśli numerator <= 0, oznacza to, że padniemy w nadchodzącym cyklu (bez pomijania)
int128 safe_cycles = 0;
if (numerator > 0) {
safe_cycles = (numerator - 1) / drop_per_cycle + 1;
// +1 w logice, bo safe_cycles to ile cykli PRZEŻYJEMY.
// Ale czekaj, uprośćmy logikę:
// Obliczamy ile cykli trzeba odjąć od s, żeby (s + min_prefix) stało się <= 0.
// Szukamy najmniejszego X takiego, że s - X*drop + min <= 0
// s + min <= X * drop
// X >= (s + min) / drop
// X = (s + min + drop - 1) / drop (sufit z dzielenia)
int128 jumps_needed = (numerator + drop_per_cycle - 1) / drop_per_cycle;
// jumps_needed to liczba cykli, po których nastąpi zgon.
// Czyli musimy pominąć (jumps_needed - 1) cykli i wejść do tego ostatniego.
safe_cycles = jumps_needed - 1;
} else {
safe_cycles = 0; // Padniemy w tym cyklu, który właśnie ma nadejść
}
// Jeśli bezpieczne cykle przekraczają to co nam zostało, to przeżyjemy wszystko
if (safe_cycles >= cycles_left) {
cout << "Nic nas nie powstrzyma!" << endl;
return 0;
}
// Przeskakujemy bezpieczne cykle
s += safe_cycles * cycle_sum;
// Symulujemy ten jeden, ostatni cykl, w którym na pewno padniemy
current_prefix = 0;
for (int i = 0; i < n_in; ++i) {
current_prefix += a[i];
if (s + current_prefix <= 0) {
cout << i + 1 << endl;
return 0;
}
}
// Teoretycznie ten punkt jest nieosiągalny przy poprawnej matematyce,
// ale dla bezpieczeństwa:
cout << "Nic nas nie powstrzyma!" << endl;
return 0;
}