Professor İvanovun alqoritmi
Professor İvanov, professor Petrov'a yeni bir sıralama metodu icad etdiyini bildirdi. Bu metodun əsasında aşağıdakı change funksiyası dayanır.
function change(a: integer);
begin
for j := 0 to n - 1 do
begin
if p[j] = a then
k := j
end
swap(k, (k + p[k]) mod n);
end;
swap(i, j) funksiyası p_i və p_j massiv elementlərinin yerlərini dəyişdirir.
Professor İvanov iddia edir ki, p_0, …, p_{n−1} kimi istənilən tam ədədlərin 1, ..., n permutasiyasını bir neçə dəfə change funksiyasını çağıraraq artan qaydada sıralamaq mümkündür. Sadəcə olaraq hər bir çağırış üçün a arqumentini 1 ilə n arasında düzgün seçmək lazımdır.
Professor Petrov həmkarına inanır, lakin alqoritmin necə işlədiyini tam başa düşmədi. Buna görə də o, p_0, …, p_{n−1} permutasiyasını təklif etdi və professor İvanovdan change funksiyası vasitəsilə onu artan qaydada sıralamasını istədi.
Giriş verilənləri
Birinci sətirdə tam ədəd n (1 ≤ n ≤ 500) verilir. İkinci sətirdə p_0, …, p_{n−1} tam ədədləri verilir, 1 ilə n arasında olan - professor Petrov tərəfindən təklif olunan permutasiya.
Çıxış verilənləri
Əgər professor İvanov change funksiyası ilə p_0, …, p_{n−1} massivini artan qaydada sıralaya bilməzsə, "Impossible" çıxış edin. Əks halda, birinci sətirdə m - funksiyanın çağırış sayı (0 ≤ m ≤ 10^6) verin. Növbəti m sətirdə change funksiyasına veriləcək arqumentləri çıxış edin. Zəmanət verilir ki, əgər massiv artan qaydada sıralana bilirsə, bunu 10^6 çağırışdan çox olmadan etmək mümkündür.