n, k = map(int, input().split()) a = list(map(int, input().split())) if k == 0: print(' '.join(map(str, a))) exit() seen = {} current = a.copy() steps = 0 seen[tuple(current)] = steps history = [current.copy()] cycle_found = False while steps < k: x = current[0] m = x + 1 next_arr = [] # Process the first m elements if m > len(current): m = len(current) for i in range(1, m): next_arr.append(current[i]) next_arr.append(current[0]) # Add the remaining elements next_arr.extend(current[m:]) current = next_arr steps += 1 # Check if current state has been seen before current_tuple = tuple(current) if current_tuple in seen: prev_step = seen[current_tuple] cycle_length = steps - prev_step remaining = k - steps if remaining > 0: remaining %= cycle_length # Simulate remaining steps for _ in range(remaining): x = current[0] m = x + 1 next_arr = [] for i in range(1, m): next_arr.append(current[i]) next_arr.append(current[0]) next_arr.extend(current[m:]) current = next_arr cycle_found = True break else: seen[current_tuple] = steps history.append(current.copy()) if not cycle_found: # Simulate remaining steps if no cycle found (steps == k) pass print(' '.join(map(str, current)))