package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

type LinkNode struct {
	Val  int
	Next *LinkNode
}

func main() {
	for {
		scanner := bufio.NewScanner(os.Stdin)

		// 设置大缓冲区,防止大输入时出错
		buf := make([]byte, 1024*1024) // 1MB
		scanner.Buffer(buf, 1024*1024)
		scanner.Split(bufio.ScanWords) // 按单词扫描(空格、换行等分隔)

		// 读取第一行:n
		scanner.Scan()
		n, _ := strconv.Atoi(scanner.Text())
		if n == 0 {
			break
		}
		scanner.Scan()
		k, _ := strconv.Atoi(scanner.Text())
		if k == 0 {
			break
		}
		dummy := &LinkNode{}
		cur := dummy
		for i := 0; i < n; i++ {
			scanner.Scan()
			num, _ := strconv.Atoi(scanner.Text())
			tmp := &LinkNode{Val: num}
			cur.Next = tmp
			cur = cur.Next
		}

		head := dummy.Next
		process(dummy, k)

		for head != nil {
			fmt.Printf("%d ", head.Val)
			head = head.Next
		}
	}
}

// 双指针解法,2个指针差k步,搞个dummy方便计算所在位置
func process(dummy *LinkNode, k int) {
	var pre *LinkNode
	nextk := dummy
	for k > 0 {
		nextk = nextk.Next
		k--
	}
	for nextk != nil {
		pre = dummy
		dummy = dummy.Next
		nextk = nextk.Next
	}

	if dummy.Next != nil {
		pre.Next = dummy.Next
		dummy.Next = nil
	} else {
		pre.Next = nil
	}
}