import java.util.*;


public class Solution {
   
//    从1开始,n是数组长度,m是移动数
// 像后面整体移动几个就相当于,反转 移动数与数组长度 到前面
    public int[] solve (int n, int m, int[] a) {
        // 进行三次反转,直到反转成目标样
        // 第一次整体反转,第二次将左边m个数反转,
        // 第三次将右边n-m个数反转

        // 将移动次数取与,数组长度可能小于移动数
        m = m%n;
        reverse(a,0,n-1);
        reverse(a,0,m-1);
        reverse(a,m ,n-1);
        
        return a;
    }
    //反转函数
    public void reverse(int[] nums, int start, int end){
        while(start < end){
            swap(nums, start++, end--);
        }
    }

    public void swap(int[] num,int start,int end){

        int tmp = num[start];
        num[start] = num[end];
        num[end] = tmp;
    }
}