class Solution {
public:
void reverse(vector<int>&a,int i,int j){
while(i<j) swap(a[i],a[j]),++i,--j;
}
void rotate(vector<int>& a, int k) {
int n=a.size();k%=n;
reverse(a,0,n-1);
reverse(a,0,k-1);
reverse(a,k,n-1);
}
};
class Solution {
public:
void rotate(vector<int>& a, int k) {
int n=a.size();
for(int i=0;i<gcd(n,k);++i){
int j=(i+k)%n,tmp=a[i];
while(j!=i) swap(tmp,a[j]),j=(j+k)%n;
swap(tmp,a[i]);
}
}
};