using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
for (int i = 1 ; i != 16 ; i++) {
Cycle(Enumerable.Range(1, 2*i).ToArray());
}
}
static void Cycle(int[] data) {
int n = data.Length / 2;
int p = 0;
var seen = new bool[n];
while (true) {
int last = data[p];
do {
var tmp = data[p];
data[p] = last;
last = tmp;
if (p < n) {
seen[p] = true;
}
p = (p/2) + (p%2 == 0 ? n : 0);
} while (p >= n || !seen[p]);
data[p] = last;
while (p != n && seen[p]) {
p++;
}
if (p == n) {
break;
}
}
Console.WriteLine(string.Join(" ", data));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJZm9yIChpbnQgaSA9IDEgOyBpICE9IDE2IDsgaSsrKSB7CgkJICAgIEN5Y2xlKEVudW1lcmFibGUuUmFuZ2UoMSwgMippKS5Ub0FycmF5KCkpOwoJCX0KCX0KCXN0YXRpYyB2b2lkIEN5Y2xlKGludFtdIGRhdGEpIHsKCQlpbnQgbiA9IGRhdGEuTGVuZ3RoIC8gMjsKCQlpbnQgcCA9IDA7CgkJdmFyIHNlZW4gPSBuZXcgYm9vbFtuXTsKCQl3aGlsZSAodHJ1ZSkgewoJCSAgICBpbnQgbGFzdCA9IGRhdGFbcF07CgkJICAgIGRvIHsKCQkgICAgCXZhciB0bXAgPSBkYXRhW3BdOwoJCSAgICAJZGF0YVtwXSA9IGxhc3Q7CgkJICAgIAlsYXN0ID0gdG1wOwoJCQlpZiAocCA8IG4pIHsKCQkJICAgIHNlZW5bcF0gPSB0cnVlOwoJCQl9CgkJCXAgPSAocC8yKSArIChwJTIgPT0gMCA/IG4gOiAwKTsKCQkgICAgfSB3aGlsZSAocCA+PSBuIHx8ICFzZWVuW3BdKTsKCQkgICAgZGF0YVtwXSA9IGxhc3Q7CgkJICAgIHdoaWxlIChwICE9IG4gJiYgc2VlbltwXSkgewoJCSAgICAJcCsrOwoJCSAgICB9CgkJICAgIGlmIChwID09IG4pIHsKCQkgICAgCWJyZWFrOwoJCSAgICB9CgkJfQoJCUNvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCIgIiwgZGF0YSkpOwoJfQp9