#!/usr/bin/env python3 def cycle(start): """Najde v grafu cyklus začínající vrcholem start a vrátí ho v seznamu v pořadí vrcholů na cyklu.""" i = start out = [] while i != start or not out: # not out je to samé jako len(out) == 0 (hned na začátku totiž i == # start, ale my teprve začínáme) out.append(i) i = p[i] return out N, k = map(int, input().split()) # Pro každý vrchol máme poznamenáno, kam z něj vede hrana p = [int(input()) for i in range(N)] # Zda jsme už daný vrchol objevili v rámci nějakého cyklu used = [False] * N # Výstup, tj. pro každý vrchol, kam se dostaneme po k krocích dopředu. out = [None] * N for i in range(N): if used[i]: continue c = cycle(i) # Najdeme cyklus začínající v tomto vrcholu for i, a in enumerate(c): # jelikož cyklus má délku len(c), po k krocích skončíme na ((i + k) % # len(c))-tém vrcholu cyklu. out[a] = c[(i + k) % len(c)] for v in c: used[v] = True for i in out: print(i)