#include <stdio.h>
#include <stdlib.h>
void ringShift(int* a, int n, int k)
{
k %= n;
if (k < 0)
k += n;
int* temp = (int*)malloc(n * sizeof(int));
// 将末尾的k个元素先存储起来
for (int i = 0; i < k; i++) {
temp[i] = a[n - k + i];
}
// 将前面的元素向后移
for (int i = n - 1; i >= k; i--) {
a[i] = a[i - k];
}
// 将temp数组中的元素放回原数组的开始位置
for (int i = 0; i < k; ++i) {
a[i] = temp[i];
}
// 释放临时数组占用的内存
free(temp);
}
int main() {
int n;
scanf("%d", &n);
int* a = (int*)malloc(n * sizeof(int));
// 填充数组
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int k;
scanf("%d", &k);
// 执行环形左移操作
ringShift(a, n, k);
// 输出结果
for (int i = 0; i < n; ++i) {
printf("%d ", a[i]);
}
// 释放原始数组占用的内存
free(a);
return 0;
}