const fs = require('fs');
const input = fs.readFileSync('./dev/stdin').toString().trim().split(' ');
const N = +input.shift();
const M = +input.shift();
const isVisited = new Array(N);
let output = [];
let result = '';
function dfs(cnt) {
if (cnt === M) {
result += `${output.join(' ')}\n`;
return;
}
for (let i = 0; i < N; i++) {
if (isVisited[i] === true) continue;
isVisited[i] = true;
output.push(i + 1);
dfs(cnt + 1);
output.pop();
isVisited[i] = false;
}
}
dfs(0);
console.log(result.trim());
const fs = require('fs');
const input = fs.readFileSync('./dev/stdin').toString().trim().split(' ');
const N = +input.shift();
const M = +input.shift();
const isVisited = new Array(N);
let output = [];
let result = '';
function dfs(cnt) {
if (cnt === M) {
result += `${output.join(' ')}\n`;
return;
}
for (let i = 0; i < N; i++) {
if (isVisited[i] === true) continue;
isVisited[i] = true;
output.push(i + 1);
dfs(cnt + 1);
output.pop();
isVisited[i] = false;
}
}
dfs(0);
const resultArr = result
.trim()
.split('\n')
.map(el => el.split(' ').map(Number))
.map(el => el.sort().join(' '));
const answer = [...new Set(resultArr)];
console.log(answer.join('\n'));
const fs = require('fs');
const input = fs.readFileSync('./dev/stdin').toString().trim().split(' ');
const N = +input.shift();
const M = +input.shift();
let output = [];
let result = '';
function dfs(cnt) {
if (cnt === M) {
result += `${output.join(' ')}\n`;
return;
}
for (let i = 0; i < N; i++) {
output.push(i + 1);
dfs(cnt + 1);
output.pop();
}
}
dfs(0);
console.log(result.trim());
const fs = require('fs');
const input = fs.readFileSync('./dev/stdin').toString().trim().split(' ');
const N = +input.shift();
const M = +input.shift();
let output = [];
let result = '';
function isIncreasing(output) {
let isIncreasing = true;
for (let i = 0; i < output.length - 1; i++) {
if (output[i] > output[i + 1]) {
isIncreasing = false;
}
}
return isIncreasing;
}
function dfs(cnt) {
if (isIncreasing(output)) {
if (cnt === M) {
result += `${output.join(' ')}\n`;
return;
}
} else {
return;
}
for (let i = 0; i < N; i++) {
output.push(i + 1);
dfs(cnt + 1);
output.pop();
}
}
dfs(0);
console.log(result.trim());
const fs = require('fs');
const input = fs.readFileSync('./dev/stdin').toString().trim().split('\n');
const N = +input[0];
const teamNum = N / 2;
const stats = input.slice(1).map(str => str.split(' ').map(Number));
let isVisited = new Array(N);
const start = [];
let link = [];
let min = Infinity;
function dfs(cnt) {
if (cnt === teamNum) {
link = [];
let startSum = 0;
let linkSum = 0;
for (let i = 0; i < N; i++) {
if (!start.includes(i)) {
link.push(i);
}
}
for (let j = 0; j < teamNum - 1; j++) {
for (let k = j + 1; k < teamNum; k++) {
startSum += stats[start[j]][start[k]] + stats[start[k]][start[j]];
linkSum += stats[link[j]][link[k]] + stats[link[k]][link[j]];
}
}
const diff = Math.abs(startSum - linkSum);
min = Math.min(diff, min);
return;
}
for (let i = 0; i < N; i++) {
if (isVisited[i] === true) continue;
isVisited[i] = true;
start.push(i);
dfs(cnt + 1);
start.pop();
isVisited[i] = false;
}
}
dfs(0);
console.log(min);
const fs = require('fs');
const input = fs.readFileSync('./dev/stdin').toString().trim().split('\n');
const N = +input.shift();
const numArr = input[0].split(' ').map(Number);
const operator = input[1].split(' ').map(Number);
let operatorArr = [];
for (let i = 0; i < operator.length; i++) {
for (let j = 0; j < operator[i]; j++) {
operatorArr.push(i);
}
}
let result = 0;
let min = Infinity;
let max = 0;
let isVisited = new Array(N - 1).fill(false);
let output = [];
function calculate(output) {
let result = numArr[0];
for (let i = 0; i < N; i++) {
if (output[i] === 0) {
result = result + numArr[i + 1];
} else if (output[i] === 1) {
result = result - numArr[i + 1];
} else if (output[i] === 2) {
result = result * numArr[i + 1];
} else if (output[i] === 3) {
if (result < 0) {
result = Math.abs(result);
result = -Math.floor(result / numArr[i + 1]);
} else {
result = Math.floor(result / numArr[i + 1]);
}
}
}
return result;
}
function dfs(cnt) {
if (cnt === N - 1) {
result = calculate(output);
if (result < min) {
min = result;
}
if (result > max) {
max = result;
}
}
for (let i = 0; i < N - 1; i++) {
if (isVisited[i]) continue;
isVisited[i] = true;
output.push(operatorArr[i]);
dfs(cnt + 1);
isVisited[i] = false;
output.pop();
}
}
dfs(0);
console.log(max + '\n' + min);