不难发现,这是个 i->pi的置换
对于样例1,即为置换(6 1)(5 4 3 8 2)(9 7)
题目即让构造ax + b y = n
x个a次置换,y个b次置换
ll exgcd(ll a, ll b, ll &x, ll &y){
if(!b){
x = 1, y = 0;
return a;
}
int d = exgcd(b, a%b, y, x);
y -= x*(a/b);
return d;
}
signed main(){
ll n, a, b;
cin >> n >> a >> b;
ll g = gcd(a, b);
if( n % g==0 ){
ll x, y;
exgcd(a, b, x, y);
// 最小化处理
ll mod = b / g;
x *= (n / g);
x = ((x % mod) + mod) % mod;
y = (n - a * x) / b;
if(x<0||y<0){
puts("-1");
}else{
int cnt = 1;
int last = cnt;
For(i,1,x){
For(j,1,a-1){
printf("%d ",++cnt);
}
printf("%d ",last);
cnt++;
last = cnt;
}
For(i,1,y){
For(j,1,b-1){
printf("%d ",++cnt);
}
printf("%d ",last);
cnt++;
last = cnt;
}
}
}else{
puts("-1");
}
}