C语言中有关移数的问题

Problem A: 移数
Description
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数
Input
多组测试数据。每组2行 第1行输入2个整数n和m, 1 < m < n < 100 第2行输入n个整数
Output
输出移动后的数据
Sample Input

4 2
1 4 5 6

Sample Output

5 6 1 4

我的代码是

#include <stdio.h>
int main(void)
{
    int i,m,n;
    int a[100];
    
    while((scanf("%d%d",&n,&m))&&(m<n)&&(m>1)&&(n<100)){
        for(i=0;i<n;i++){scanf("%d",&a[i]);}
        for(i=n-m;i<n;i++){if(i==n-m){printf("%d",a[i]);}
        else{printf(" %d",a[i]);}}
        for(i=0;i<n-m;i++){printf(" %d",a[i]);}
        printf("\n");
    }
    return 0;
}

反正不管是用另外的数组替换的,还是怎么都是给错误答案的
然后希望各位能不用指针解一下,我认为我的是没有问题的。