const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void (async function () { // Write your code here let params = []; while ((line = await readline())) { let tokens = line.split(" "); // let a = parseInt(tokens[0]); // let b = parseInt(tokens[1]); // console.log(a + b); params.push(tokens); } // console.log(params) let n_length = parseInt(params[0][0]); let result = []; let nums = []; for (let i = 0; i < n_length; i++) { nums[i] = i + 1; } // console.log(nums) function getCombines(origins) { function backTrace(arr) { if (result.length == n_length) { console.log(result.join(" ")); return; } for (let i = 0; i < arr.length; i++) { // 先选中第一个数 result.push(arr[i]); // 从剩下数中递归找另外一个数 backTrace(arr.filter((v, index) => index != i)); result.pop(); } } backTrace(origins); } getCombines(nums); })();