var v = parseInt(process.argv[0]);
if (isNaN(v)) v = parseInt(process.argv[1]);
if (isNaN(v)) v = parseInt(process.argv[2]);
if (isNaN(v)) v = parseInt(process.argv[3]);
if (isNaN(v)) v = parseInt(process.argv[4]);
if (isNaN(v)) v = parseInt(process.argv[5]);
if (isNaN(v)) v = parseInt(process.argv[6]);
var div = v / 2;
if (v % 2 !== 0) {
div += 0.5;
}
var posses = [];
for (var y = 0; y < v; y++) {
posses[y] = [];
}
for (var y = 0; y < v; y++) {
for (var x = 0; x < v; x++) {
if (x == y) {
add(x, y, '1');
} else if (x == v - y - 1) {
add(x, y, v.toString());
} else {
add(x, y, 'x');
}
}
}
var amounts = div - 1;
for (var index = 1; index < amounts + 1; index++) {
var amount = v - index * 2;
for (var y = 0; y < amount + 1; y += amount) {
for (var x = 0; x < amount; x++) {
var realIndex = x + index;
if (y == 0) {
add(realIndex, index - 1, (realIndex + 1).toString());
} else {
add(realIndex, v - index, (v - realIndex).toString());
}
}
}
for (var y = 0; y < amount + 1; y += amount) {
for (var x = 0; x < amount; x++) {
var realIndex = x + index;
if (y == 0) {
add(index - 1, realIndex, (realIndex + 1).toString());
} else {
add(v - index, realIndex, (v - realIndex).toString());
}
}
}
}
for (var y = 0; y < v; y++) {
var str = '';
for (var x = 0; x < v; x++) {
str += posses[y][x] + ' ';
}
console.log(sub(str));
}
function add(x, y, str) {
posses[y][x] = str;
}
function sub(str) {
return str.substring(0, str.length);
}