package Ġrotate _ array Ċ Ċ class ĠSolution Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġcommon Div isor ( a : ĠInt , Ġb : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġa Ġ= Ġa ĊĠĠĠĠĠĠĠ Ġvar Ġb Ġ= Ġb ĊĠĠĠĠĠĠĠ Ġwhile Ġ( b Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġa Ġ% Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġa ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrotate ( nums : ĠInt Array , Ġk : ĠInt ): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk Ġ= Ġk Ġ% Ġnums . size ĊĠĠĠĠĠĠĠ Ġif Ġ( k Ġ== Ġ 0 ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġmd Ġ= Ġcommon Div isor ( nums . size , Ġk ) ĊĠĠĠĠĠĠĠ Ġval Ġmm Ġ= Ġnums . size . to Long () Ġ* Ġk Ġ/ Ġmd ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġmd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtmp : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ( k Ġuntil Ġmm Ġstep Ġk . to Long ()). reversed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġ(( i Ġ+ Ġj ) Ġ% Ġnums . size ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Prev Ġ= Ġ(( i Ġ+ Ġj Ġ- Ġk ) Ġ% Ġnums . size ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġnums [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ index ] Ġ= Ġnums [ index Prev ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnums [ j ] Ġ= Ġtmp !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }