
# 一个数组A中存有N（N>0）个整数，在不允许使用另外数组的前提下，将每个整数循环向右移M（M>=0）个位置，即将A中的数据由（A0 A1……AN-1）变换为（AN-M …… AN-1 A0 A1……AN-M-1）（最后M个数循环移至最前面的M个位置）。如果需要考虑程序移动数据的次数尽量少，要如何设计移动的方法？
# 输入格式：每个输入包含一个测试用例，第1行输入N ( 1<=N<=100)、M（M>=0）；第2行输入N个整数，之间用空格分隔。
# 输出格式：在一行中输出循环右移M位以后的整数序列，之间用空格分隔，序列结尾不能有多余空格。
# 输入样例：
# 6 2
# 1 2 3 4 5 6
# 输出样例：
# 5 6 1 2 3 4

NM = str(input())
N = int(NM[0 : NM.find(" ")])   #获取输入的N
M = int(NM[NM.find(" ")+1 : ])  #获取输入的M
# print(N + "," + M)

if 0 < N < 101 and -1 < M <101:
    string = str(input())   #获取输入的数组（字符串形式）

    strList = string.split(" ")    #切割掉字符串中的空格，获取真实数组（列表）

    #通过出栈的形式弹出列表中的最后一个元素，再将其插入到列表的最前面
    #需要右移多少个元素就弹出/插入多少次
    while M > 0:
        temp = strList.pop()    #弹出列表中的最后一个元素
        strList.insert(0,temp)  #将其插入到列表的最前面
        M -= 1
        # print(len(strList))
        # print(strList)
    res = " ".join(strList)     #最后再将其还原为字符串输出
    print(res)
